谷歌地图API V3:将标记坐标传递给谷歌路线服务请求



用户使用Google Places API搜索我的地图,该API为我的地图添加标记。我在每个标记信息窗口中都有一个单击事件,以获取到该标记的方向。如何将所选标记的坐标传递给我的谷歌路线服务请求?

到目前为止,我将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);
 });

像这样的东西?

function createMarker(options) {
  var marker = new google.maps.Marker(options);
  google.maps.event.addListener(marker, 'click', function() {
    placeLoc = marker.getPosition();
    calcRoute();
  });
  return marker;
}

最新更新