2016-07-13 7 views
0

現在、iOSデバイス用のUberアプリと同様のアプリを開発中です。 、彼は常にマップの中央にポリラインで彼の現在の位置を確認する必要があるドライバドライブは、距離&合計時間は画面の中央にあるGoogleマップで運転中の現在地(運転中)を確認するにはどうすればよいですか?

を旅しながら:私は私のクエリであるGoogleマップSDK

を使用し、その目的のために

ここで

私はMKMapKitコードで1件のサンプル画像が見つかりました:Image URL linkSample code url

私もカスタムイメージ(カー記号)とGoogle Mapのために同じコードを探しています。

どうすればこの問題を解決できますか?私を助けてください。

答えて

1

あなたがドライバの場合は、Geolocationを使用して現在地を検出できます。

threadから、CLLocationManagerを使用して位置を取得する必要があります。

まず、プロジェクトにCoreLocation.frameworkを追加します。

  • ゴーProject Navigator
  • にタブに、プロジェクト
  • クリックして選択しBuild Phases
  • Link Binary with Libraries
CoreLocation.frameworkを追加します。

次に、Apple documentationの基本例に従うだけです。

  • おそらくあなたViewDidLoadCLLocationManagerを作成します:CLLocationManagerDelegate位置は が更新されるたびに付き

    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]; 
    

、あなたはあなたの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;を追加する必要があり、フレームワークがすべてを行います。 (あなたの地図の中心を除いて)。

この手順は、documentationに従います。あなたの位置に従うように地図を更新したい場合は、フレームワークディレクトリに含まれているGoogleの例MyLocationViewController.mをコピーすることができます。カメラのプロパティを更新するためにオブザーバをmyLocationプロパティに追加するだけです。

移動距離の合計を取得するには、related questionにチェックを入れます。あなたは緯度/経度にアドレスをジオコーディングする必要があると言いますが、CLLocationフレームワークを使用して距離を計算することができます。

住所をジオコードするには、forward geocoding APIを使用します。

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

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

また、このrelated linkを確認することができます。

希望すると便利です。

関連する問題