Карты Google, показывающие маршрут и расстояние между двумя точками

StackOverflow https://stackoverflow.com/questions/640695

  •  22-07-2019
  •  | 
  •  

Вопрос

Я работаю над сайтом профиля, который показывает местоположение людей, использующих карты 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 и дает вам подготовленную страницу? Это также я не знаю как.

Это было полезно?

Решение

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

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

Loooks нравится то, что вы ищете.

Другие советы

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top