Карты Google, показывающие маршрут и расстояние между двумя точками - PullRequest
2 голосов
/ 13 марта 2009

Я работаю над профилем-сайтом, который показывает местонахождение людей, использующих карты Google.

Я внедрил карты Google, и теперь он показывает, где живет человек, которого вы просматриваете, и где вы живете.

Код здесь:

  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 места расположены так далеко друг от друга, что не помещаются на карте вместе. Я не знаю, как это исправить.

Следующим шагом я хочу, чтобы карта показывала визуальный маршрут между двумя точками и их расстоянием при следовании по этому маршруту. Я пробовал это на сайте карт Google, и я знаю, что у них есть эта функция. Я просто не могу найти документацию о том, как это реализовать.

Или лучше сделать гиперссылку, которая идет на карты Google и дает вам подготовленную страницу? Это я тоже не знаю как.

Ответы [ 3 ]

2 голосов
/ 13 марта 2009

Никогда не делал, но видел GDirections в API:

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

Loooks как то, что вы ищете.

2 голосов
/ 28 апреля 2009

Добавьте все точки к многоугольнику. Из полигона получите 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();
    }
0 голосов
/ 13 марта 2009

Это в API. вы можете найти его с помощью

route site:http://code.google.com/apis/maps

Вот одна страница, например, которая показывает «указания водителя» в оверлее с Flash. API немного отличается, когда вы создаете карты вне флеш-памяти, но это тот же базовый код. http://code.google.com/apis/maps/documentation/flash/services.html

Я больше работал с MapQuest, так что я только начинаю пользоваться API Карт Google.

...