如何在多个标记之间制作路线方向 [英] How to make route direction between multiple markers
本文介绍了如何在多个标记之间制作路线方向的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
<!DOCTYPE html>
< html>
< head>
< meta http-equiv =content-typecontent =text / html; charset = UTF-8/>
< title> Google地图多个标记< / title>
< script src =http://maps.google.com/maps/api/js?sensor=false
type =text / javascript>< / script>
< / head>
< body>
< div id =mapstyle =width:500px; height:400px;>< / div>
< script type =text / javascript>
var locations = [
['Bondi Beach',-33.890542,151.274856,4],
['Coogee Beach',-33.923036,151.259052,5],
[' Cronulla Beach',-34.028249,151.157507,3],
['Manly Beach',-33.80010128657071,151.28747820854187,2],
['Maroubra Beach',-33.950198,151.259302,1]
];
var map = new google.maps.Map(document.getElementById('map'),{
zoom:10,
center:new google.maps.LatLng( - 33.92,151.25),
mapTypeId:google.maps.MapTypeId.ROADMAP
});
var infowindow = new google.maps.InfoWindow();
var marker,i;
(i = 0; i< locations.length; i ++){
marker = new google.maps.Marker({
position:new google.maps.LatLng (位置[i] [1],位置[i] [2]),
map:map
});
google.maps.event.addListener(marker,'click',(function(marker,i){
return function(){
infowindow.setContent(locations [i ] [b]);
infowindow.open(map,marker);
}
})(marker,i));
}
< / script>
< / body>
< / html>
CodePen: http://codepen.io/anon/pen/VaQwqK
解决方案
相关问题:
- 将位置数组按照您要获取路线的顺序放置。
var locations = [
['Manly Beach',-33.80010128657071,151.28747820854187,2],
['Bondi Beach', - 33.890542,151.274856,4],
['Coogee Beach',-33.923036,151.259052,5],
['Maroubra Beach',-33.950198,151.259302,1],
['Cronulla Beach',-34.028249,151.157507,3]
];
- 创建 DirectionsService ,第一个标记位于
origin
中最后一个标记位于目的地
中,将其余部分推入路点数组中: / p>
if(i == 0)request.origin = marker.getPosition();
else if(i == locations.length - 1)request.destination = marker.getPosition();
else {
if(!request.waypoints)request.waypoints = [];
request.waypoints.push({
location:marker.getPosition(),
stopover:true
});
}
- 呼叫方向服务。
directionsService.route(request,function(result ,状态){
if(status == google.maps.DirectionsStatus.OK){
directionsDisplay.setDirections(result);
}
});
代码段:
var geocoder; var map; var directionsDisplay; var directionsService = new google.maps.DirectionsService(); var locations = [['Manly Beach ''-33.80010128657071,151.28747820854187,2],['Bondi Beach',-33.890542,151.274856,4],['Coogee Beach',-33.923036,151.259052,5],['Maroubra Beach',-33.950198,151.259302,1 ],['Cronulla Beach',-34.028249,151.157507,3]];函数initialize(){directionsDisplay = new google.maps.DirectionsRenderer(); var map = new google.maps.Map(document.getElementById('map'),{zoom:10,center:new google.maps.LatLng(-33.92,151.25),mapTypeId:google.maps.MapTypeId.ROADMAP}) ; directionsDisplay.setMap(地图); var infowindow = new google.maps.InfoWindow(); var marker,i; var request = {travelMode:google.maps.TravelMode.DRIVING}; (位置[i] [1],位置[i] [2] ),}); google.maps.event.addListener(marker,'click',(function(marker,i){return function(){infowindow.setContent(locations [i] [0]); infowindow.open(map,marker);} })(marker,i)); if(i == 0)request.origin = marker.getPosition(); else if(i == locations.length - 1)request.destination = marker.getPosition(); else {if(!request.waypoints)request.waypoints = []; request.waypoints.push({location:marker.getPosition(),stopover:true}); }} directionsService.route(request,function(result,status){if(status == google.maps.DirectionsStatus.OK){directionsDisplay.setDirections(result);}});} google.maps.event.addDomListener(window ,load,initialize);
< #map {height:100%;宽度:100%; margin:0px; < script src =https:// //maps.googleapis.com/maps/api/js\"></script><div id =map>< / div>
How to make route direction between Manly Beach -> Bondi Beach -> Coogee Beach -> Maroubra Beach -> Cronulla Beach and finally go from Cronulla Beach to Manly Beach
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <title>Google Maps Multiple Markers</title> <script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script> </head> <body> <div id="map" style="width: 500px; height: 400px;"></div> <script type="text/javascript"> var locations = [ ['Bondi Beach', -33.890542, 151.274856, 4], ['Coogee Beach', -33.923036, 151.259052, 5], ['Cronulla Beach', -34.028249, 151.157507, 3], ['Manly Beach', -33.80010128657071, 151.28747820854187, 2], ['Maroubra Beach', -33.950198, 151.259302, 1] ]; var map = new google.maps.Map(document.getElementById('map'), { zoom: 10, center: new google.maps.LatLng(-33.92, 151.25), mapTypeId: google.maps.MapTypeId.ROADMAP }); var infowindow = new google.maps.InfoWindow(); var marker, i; for (i = 0; i < locations.length; i++) { marker = new google.maps.Marker({ position: new google.maps.LatLng(locations[i][1], locations[i][2]), map: map }); google.maps.event.addListener(marker, 'click', (function(marker, i) { return function() { infowindow.setContent(locations[i][0]); infowindow.open(map, marker); } })(marker, i)); } </script> </body> </html>
CodePen: http://codepen.io/anon/pen/VaQwqK
解决方案related questions:
- put the locations array in the order you want to get the directions in.
var locations = [ ['Manly Beach', -33.80010128657071, 151.28747820854187, 2], ['Bondi Beach', -33.890542, 151.274856, 4], ['Coogee Beach', -33.923036, 151.259052, 5], ['Maroubra Beach', -33.950198, 151.259302, 1], ['Cronulla Beach', -34.028249, 151.157507, 3] ];
- create the request for the DirectionsService with the first marker in
origin
the last marker indestination
, push the rest into the waypoints array:
if (i == 0) request.origin = marker.getPosition(); else if (i == locations.length - 1) request.destination = marker.getPosition(); else { if (!request.waypoints) request.waypoints = []; request.waypoints.push({ location: marker.getPosition(), stopover: true }); }
- call the directions service.
directionsService.route(request, function(result, status) { if (status == google.maps.DirectionsStatus.OK) { directionsDisplay.setDirections(result); } });
code snippet:
var geocoder; var map; var directionsDisplay; var directionsService = new google.maps.DirectionsService(); var locations = [ ['Manly Beach', -33.80010128657071, 151.28747820854187, 2], ['Bondi Beach', -33.890542, 151.274856, 4], ['Coogee Beach', -33.923036, 151.259052, 5], ['Maroubra Beach', -33.950198, 151.259302, 1], ['Cronulla Beach', -34.028249, 151.157507, 3] ]; function initialize() { directionsDisplay = new google.maps.DirectionsRenderer(); var map = new google.maps.Map(document.getElementById('map'), { zoom: 10, center: new google.maps.LatLng(-33.92, 151.25), mapTypeId: google.maps.MapTypeId.ROADMAP }); directionsDisplay.setMap(map); var infowindow = new google.maps.InfoWindow(); var marker, i; var request = { travelMode: google.maps.TravelMode.DRIVING }; for (i = 0; i < locations.length; i++) { marker = new google.maps.Marker({ position: new google.maps.LatLng(locations[i][1], locations[i][2]), }); google.maps.event.addListener(marker, 'click', (function(marker, i) { return function() { infowindow.setContent(locations[i][0]); infowindow.open(map, marker); } })(marker, i)); if (i == 0) request.origin = marker.getPosition(); else if (i == locations.length - 1) request.destination = marker.getPosition(); else { if (!request.waypoints) request.waypoints = []; request.waypoints.push({ location: marker.getPosition(), stopover: true }); } } directionsService.route(request, function(result, status) { if (status == google.maps.DirectionsStatus.OK) { directionsDisplay.setDirections(result); } }); } google.maps.event.addDomListener(window, "load", initialize);
html, body, #map { height: 100%; width: 100%; margin: 0px; padding: 0px }
<script src="https://maps.googleapis.com/maps/api/js"></script> <div id="map"></div>
这篇关于如何在多个标记之间制作路线方向的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文