Google Maps API V3: как показать направление от точки A до точки B (Синяя линия)?
У меня есть широта и долгота для 2 точек в базе данных, я хочу, чтобы моя карта Google отображала маршрут из точки A в точку B...
Как мы видим здесь (Google Maps Directions)

Как нарисовать эту линию направления на карте ?
5 ответов:
использовать направлений из Google Maps API v3. Это в основном то же самое, что и API направлений, но красиво упаковано в Google Maps API, который также обеспечивает удобный способ легко отображать маршрут на карте.
информацию и примеры рендеринга маршрутов маршрутов на карте можно найти в рендеринг направления из документации Google Maps API v3.
С Помощью Javascript
Я создал рабочую демонстрацию, которая показывает, как использовать сервис Google Maps API Directions в Javascript через
DirectionsServiceобъект для отправки и получения запросов направлениеDirectionsRendererобъект для отображения возвращенного маршрута на картеfunction initMap() { var pointA = new google.maps.LatLng(51.7519, -1.2578), pointB = new google.maps.LatLng(50.8429, -0.1313), myOptions = { zoom: 7, center: pointA }, map = new google.maps.Map(document.getElementById('map-canvas'), myOptions), // Instantiate a directions service. directionsService = new google.maps.DirectionsService, directionsDisplay = new google.maps.DirectionsRenderer({ map: map }), markerA = new google.maps.Marker({ position: pointA, title: "point A", label: "A", map: map }), markerB = new google.maps.Marker({ position: pointB, title: "point B", label: "B", map: map }); // get route from A to B calculateAndDisplayRoute(directionsService, directionsDisplay, pointA, pointB); } function calculateAndDisplayRoute(directionsService, directionsDisplay, pointA, pointB) { directionsService.route({ origin: pointA, destination: pointB, travelMode: google.maps.TravelMode.DRIVING }, function(response, status) { if (status == google.maps.DirectionsStatus.OK) { directionsDisplay.setDirections(response); } else { window.alert('Directions request failed due to ' + status); } }); } initMap();html, body { height: 100%; margin: 0; padding: 0; } #map-canvas { height: 100%; width: 100%; }<script src="https://maps.googleapis.com/maps/api/js?sensor=false"></script> <div id="map-canvas"></div>также на Jsfiddle: http://jsfiddle.net/user2314737/u9no8te4/
используя Google Maps Web Services
вы можете использовать веб-службы, используя API_KEY, выдающий запрос следующим образом:
https://maps.googleapis.com/maps/api/directions/json?origin=Toronto&destination=Montreal&key=API_KEY
API_KEY можно получить в консоли разработчика Google с квотой 2500 бесплатных запросов / день.
запрос может возвращать результаты JSON или XML, которые могут быть использованы для рисования пути на a карта.
официальная документация для веб-сервисов с использованием Google Maps Directions API являются здесь
в вашем случае вот реализация с помощью направлений.
function displayRoute() { var start = new google.maps.LatLng(28.694004, 77.110291); var end = new google.maps.LatLng(28.72082, 77.107241); var directionsDisplay = new google.maps.DirectionsRenderer();// also, constructor can get "DirectionsRendererOptions" object directionsDisplay.setMap(map); // map should be already initialized. var request = { origin : start, destination : end, travelMode : google.maps.TravelMode.DRIVING }; var directionsService = new google.maps.DirectionsService(); directionsService.route(request, function(response, status) { if (status == google.maps.DirectionsStatus.OK) { directionsDisplay.setDirections(response); } }); }
использовать направления API.
сделать вызов ajax, т. е.
https://maps.googleapis.com/maps/api/directions/json?parametersа затем разобрать ответ
// First Initiate your map. Tie it to some ID in the HTML eg. 'MyMapID' var map = new google.maps.Map( document.getElementById('MyMapID'), { center: { lat: Some.latitude, lng: Some.longitude } } ); // Create a new directionsService object. var directionsService = new google.maps.DirectionsService; directionsService.route({ origin: origin.latitude +','+ origin.longitude, destination: destination.latitude +','+ destination.longitude, travelMode: 'DRIVING', }, function(response, status) { if (status === google.maps.DirectionsStatus.OK) { var directionsDisplay = new google.maps.DirectionsRenderer({ suppressMarkers: true, map: map, directions: response, draggable: false, suppressPolylines: true, // IF YOU SET `suppressPolylines` TO FALSE, THE LINE WILL BE // AUTOMATICALLY DRAWN FOR YOU. }); // IF YOU WISH TO APPLY USER ACTIONS TO YOUR LINE YOU NEED TO CREATE A // `polyLine` OBJECT BY LOOPING THROUGH THE RESPONSE ROUTES AND CREATING A // LIST pathPoints = response.routes[0].overview_path.map(function (location) { return {lat: location.lat(), lng: location.lng()}; }); var assumedPath = new google.maps.Polyline({ path: pathPoints, //APPLY LIST TO PATH geodesic: true, strokeColor: '#708090', strokeOpacity: 0.7, strokeWeight: 2.5 }); assumedPath.setMap(map); // Set the path object to the map
Comments