0

我在http://www.no1hastings.check.com.au/directions.html有一个页面,访问者可以在其中获得从任何地方到固定点的路线。谷歌地理编码器识别的目的地是街道地址(1 Morwong Drive),但我希望它显示谷歌无法识别的建筑物名称(黑斯廷斯街 1 号)。

有没有办法将街道地址设置为目的地,但在显示结果时将其别名为建筑物名称?

4

1 回答 1

1

一种选择是在将响应发送到 DirectionsRenderer 之前修改响应中的字符串:

function calcRoute() {
  var request = {
    origin: 'Brisbane QLD Australia Australia',
    //  origin: 'Brisbane Qld, Australia',
    destination: '1 Morwong Drive, Noosa Heads Qld, Australia',
    //  waypoints:[{location: 'Bourke, NSW'}, {location: 'Broken Hill, NSW'}],
    travelMode: google.maps.DirectionsTravelMode.DRIVING,
    unitSystem: google.maps.UnitSystem.METRIC
  };
  directionsService.route(request, function(response, status) {
    if (status == google.maps.DirectionsStatus.OK) {
      var route = response.routes[0];
      var lastleg = route.legs[route.legs.length-1];
      response.routes[0].legs[route.legs.length-1].end_address = 'No. 1 in Hastings Street';
      directionsDisplay.setDirections(response);
    } else alert("Directions request failed: "+status);
  });
}

要处理方向被方向渲染器更改的情况(即用于拖动原点),您可以执行类似的操作(其中 changeEnd 是全局变量并设置为 false),请注意,如果用户拖动目的地(您可能想防止:Google maps api v3 两个标记一固定一拖):

google.maps.event.addListener(directionsDisplay, 'directions_changed', function() {
  computeTotalDistance(directionsDisplay.directions);
   if (!changeEnd) {
     var response = directionsDisplay.getDirections();
     var route = response.routes[0];
     var lastleg = route.legs[route.legs.length-1];
     response.routes[0].legs[route.legs.length-1].end_address = 'No. 1 in Hastings Street';
     changeEnd = true;
     directionsDisplay.setDirections(response);
   } else changeEnd = false;
});
于 2013-08-24T00:23:37.173 回答