Карты Google, показывающие маршрут и расстояние между двумя точками
-
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.