Google地图显示了2个地点之间的路线和距离

时间:2009-03-12 22:06:52

标签: google-maps distance

我正在开设一个个人资料网站,其中显示了使用谷歌地图的人的位置。

我已经实施了谷歌地图,现在它显示了您所查看的人的生活地点和居住地。

代码在这里:

  var map = null;
  var geocoder = null;

  function initialize() {
    if (GBrowserIsCompatible()) {
      map = new GMap2(document.getElementById("map"));
      map.addControl(new GLargeMapControl());
      map.addControl(new GScaleControl());
      map.addControl(new GMapTypeControl());
      geocoder = new GClientGeocoder();
    }
  }

  function showAddresses(address1,address2) {
    if (geocoder) {
      geocoder.getLatLng(
        address1,
        function(point) {
          if (!point) {
            alert(address1 + " not found");
          } else {
            map.setCenter(point, 13);
            var marker = new GMarker(point);
            map.addOverlay(marker);
            marker.openInfoWindowHtml(address1);
          }
        }
      );

      geocoder.getLatLng(
      address2,
      function(point) {
        if (!point) {
          alert(address2 + " not found");
        } else {
          map.setCenter(point, 13);
          var marker = new GMarker(point);
          map.addOverlay(marker);
        }
      }
    );
    }
  }

然而,它没有做的是,当2个地方相距太远时,修改缩放级别,它们不适合地图上的距离。我不知道如何解决这个问题。

下一步是我希望地图显示两个点之间的视觉路线以及它们在跟踪该路线时的距离。我已经在谷歌地图网站上尝试了它,我知道它们具有此功能。我找不到任何关于如何实现它的文档。

或者只是制作一个去谷歌地图的超链接并为您准备好页面会更好吗?那我也不知道怎么做。

3 个答案:

答案 0 :(得分:2)

从未这样做过,但在api中看过GDirections:

http://code.google.com/apis/maps/documentation/reference.html#GDirections

像你在寻找的东西。

答案 1 :(得分:2)

将所有点添加到多边形。从Polygon获取LatLongBounds,可用于获取缩放级别。

    private function setMapZoomLevelBasedOnPlottedPoints(polygonPoints:Array):void
    {
        var pointBounds:LatLngBounds = getLatLongBounds(polygonPoints);
        _map.setCenter(pointBounds.getCenter());
        _map.setZoom(_map.getBoundsZoomLevel(pointBounds) - 1);
    }

    private function getLatLongBounds(polygonPoints:Array):LatLngBounds
    {
    for(var i:Number; i < polygonPoints; i++)
    {
            polygonPoints.push(polygonPoints[i] as LatLong);
    }
        var polygon:IPolygon = new Polygon(polygonPoints);
        return polygon.getLatLngBounds();
    }

答案 2 :(得分:0)

它在API中。你可以用

找到它
route site:http://code.google.com/apis/maps

例如,这是一个页面,用Flash显示“驱动程序方向”。当你在flash之外做地图时,API有点不同,但它是相同的基本代码。 http://code.google.com/apis/maps/documentation/flash/services.html

我在MapQuest上做了更多工作,所以我刚进入Google Maps API。