0

ユーザーは、マップにマーカーを追加する Google Places API を使用してマップを検索します。そのマーカーへの道順を取得するために、各マーカーの情報ウィンドウ内にクリック イベントがあります。 選択したマーカーの座標を Google ルート サービス リクエストに渡すにはどうすればよいですか?

ここまでvar placeLoc = null;はグローバル変数として宣言しました。placeLoc=place.geometry.location;マーカー作成関数内で定義しました。で、〜がある:

function calcRoute() {
 var start = myLatLng;
 var end = placeLoc;
 var request = {
    origin: start,
    destination: end,
    travelMode: google.maps.DirectionsTravelMode.BICYCLING
 };
 directionsService.route(request, function(response, status) {
    if (status == google.maps.DirectionsStatus.OK) {
        directionsDisplay.setDirections(response);
    }
 });
}

この関数は、間違ったマーカーへの道順をレンダリングします。選択した実際のマーカーではなく、検索後に返された配列内の最初のマーカーに方向を示しているだけだと推測しています。選択したマーカーの座標をルート リクエストに提供するにはどうすればよいですか?

以下は、検索結果を place 変数に入れるコードです。

 google.maps.event.addListener(searchBox, 'places_changed', function() {
     var places = searchBox.getPlaces();
     // alert("getPlaces returns "+places.length+" places");

    for (var i = 0; i < gmarkers.length; i++) {
         gmarkers[i].setMap(null);
    }

    gmarkers = [];
    var bounds = new google.maps.LatLngBounds();

    for (var i = 0, place; place = places[i]; i++) {
       var place = places[i];
       createMarker(place);
       bounds.extend(place.geometry.location);
    }
    map.fitBounds(bounds);
    // if (markers.length == 1) map.setZoom(17);
 });
4

1 に答える 1