【问题标题】:Retrieve UserLocation Coordinate with MapKit使用 MapKit 检索用户位置坐标
【发布时间】:2019-05-23 09:47:19
【问题描述】:

我在我的应用程序中使用 MapKit 并显示用户位置


[mapview setShowUserLocation:YES];

我想用userLocation的坐标设置region.center.latitude和region.center.longitude,怎么做?

【问题讨论】:

    标签: iphone objective-c mapkit


    【解决方案1】:

    这是我的答案,我尝试了类似的方法及其工作原理:

    
    //inside my ViewDidLOad
    locManager = [[CLLocationManager alloc] init];
    [locManager setDelegate:self];
    [locManager setDesiredAccuracy:kCLLocationAccuracyBest];
    [locManager startUpdatingLocation];
    
    - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation  {
    CLLocationCoordinate2D loc = [newLocation coordinate]; [maptView setCenterCoordiante:loc]; }

    【讨论】:

      【解决方案2】:

      容易多了:

      -(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation {
      MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(userLocation.location.coordinate, 1500, 1500);
      [mapView setRegion:region animated:YES];
      }
      

      【讨论】:

      • 别忘了设置mapView.delegate!
      • 这是最好的解决方案。谢谢你们。
      【解决方案3】:

      由于某种原因,这对我不起作用。它把我带到坐标(0.0000,0.0000)。以下是我的代码,如果您有机会查看的话。感谢您的帮助!

      [mapView setMapType:MKMapTypeStandard];
      [mapView setZoomEnabled:YES];
      [mapView setScrollEnabled:YES];
      mapView.showsUserLocation=TRUE;
      
      MKCoordinateRegion region = { {0.0, 0.0 }, { 0.0, 0.0 } };
      
      CLLocationCoordinate2D myCoord = {mapView.userLocation.location.coordinate.latitude,mapView.userLocation.location.coordinate.longitude};
      [mapView setCenterCoordinate:myCoord animated:YES];
      
      region.span.longitudeDelta = 0.01f;
      region.span.latitudeDelta = 0.01f;
      [mapView setRegion:region animated:YES]; 
      
      [mapView setDelegate:self];
      

      【讨论】:

        【解决方案4】:

        我认为这回答了您的问题: Returning Mapkit Userlocation Coordinates

        (使用 mapView.userLocation.location.coordinate.latitudemapView.userLocation.location.coordinate.longitude properties

        然后将这些坐标注入到

        -(void)setCenterCoordinate:(CLLocationCoordinate2D)coordinate animated:(BOOL)animated

        您的 MKMapView 实例。

        【讨论】:

        • 是的,或者我可以使用 region.center.latitude = mapView.userLocation.location.coordinate.latitude;我认为它会起作用吗?
        • 嗯,我不确定它是否有效,我建议您创建一个本地 CLLocationCoordinate2D 并将其注入给定的选择器中。您可以控制动画参数,这也可以使您的应用在动画中看起来更漂亮。
        • 我真的不知道如何使用您给我的选择器,但我会尝试,如果您有任何链接可以显示我也会很好。谢谢
        • 这样的事情应该没问题:CLLocationCoordinate2D myCoord = {mapView.userLocation.location.coordinate.latitude,mapView.userLocation.location.coordinate.longitude}; [mapView setCenterCoordinate:myCoord Animation:YES];
        • 我还有一点问题,当我做 NSLog(@"%i": mapView.userLocation.location.coordinate.latitude);我没有位置号码,我有类似的东西:71502240
        【解决方案5】:

        使用委托:

        1. 添加 Mapkit 委托:MKMapViewDelegate
        2. 实现方法:MapView didUpdateUserLocation
          -(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation {
              MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(userLocation.location.coordinate,
                  500, 500);
              [mapView setRegion:region animated:YES];
          }
          

        没有委托:

        [self.mapView setuserTrackingMode:MKUserTrackingModeFollow];
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-04-30
          • 1970-01-01
          • 2012-01-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多