如何在屏幕中央的Google地图上查看驾驶员当前位置(驾驶时)?

时间:2016-07-13 12:34:07

标签: ios objective-c google-maps mapkit

目前我正在开发类似于适用于iOS设备的优步应用的应用。

为此,我使用了Google Map SDK

我的查询是: 当驾驶员驾驶时,他需要始终在地图中心的多边形线上看到他当前的位置,距离&旅行的总时间

在这里,我找到了一个包含MKMapKit代码的示例图像:Image URL linkSample code url

我也在使用自定义图片(汽车符号)查找Google Map的相同代码。

我该如何解决这个问题?请帮帮我。

1 个答案:

答案 0 :(得分:1)

如果您是驱动程序,则可以使用other questions检测当前位置。

根据此Geolocation,您必须使用CLLocationManager检索位置。

  

首先,将CoreLocation.framework添加到您的项目中:

     
      
  • 进入Project Navigator
  •   
  • 选择您的项目
  •   
  • 点击标签Build Phases
  •   
  • CoreLocation.framework
  • 中添加Link Binary with Libraries   
     

然后您需要做的就是遵循thread的基本示例。

     
      
  • 可能在CLLocationManager

    中创建ViewDidLoad
    if (nil == locationManager)
        locationManager = [[CLLocationManager alloc] init];
    
    locationManager.delegate = self;
    //Configure Accuracy depending on your needs, default is kCLLocationAccuracyBest
    locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
    
    // Set a movement threshold for new events.
    locationManager.distanceFilter = 500; // meters
    
    [locationManager startUpdatingLocation];
    
  •   
     

每次有位置CLLocationManagerDelegate   更新后,您可以更新Google Maps上的用户排名:

- (void)locationManager:(CLLocationManager *)manager
      didUpdateLocations:(NSArray *)locations {
    // If it's a relatively recent event, turn off updates to save power.
   CLLocation* location = [locations lastObject];
   NSDate* eventDate = location.timestamp;
   NSTimeInterval howRecent = [eventDate timeIntervalSinceNow];
   if (abs(howRecent) < 15.0) {
      // Update your marker on your map using location.coordinate.latitude
      //and location.coordinate.longitude); 
   }
}

如果您使用原生MapKit.framework,它也会有效。您需要添加yourMapView.myLocationEnabled = YES;,框架将执行所有操作。 (除了你位置上的地图中心)。

按照此Apple documentation中的步骤操作。如果您想要更新地图以跟随您的位置,您可以复制框架目录中包含的Google示例MyLocationViewController.m。他们只需在myLocation属性上添加一个观察者来更新相机属性。

要获得行进的总距离,请检查documentation。它声明您需要将地址地理编码为纬度/经度,然后您可以使用CLLocation框架来计算距离。

  

要对地址进行地理编码,您可以使用此related question

// get CLLocation fot both addresses
CLLocation *location = [[CLLocation alloc] initWithLatitude:address.latitude longitude:address.longitude];

// calculate distance between them
CLLocationDistance distance = [firstLocation distanceFromLocation:secondLocation];

您还可以查看forward geocoding API

希望这有帮助!