Google maps 如何获得拖曳航点的lat和lng
我正在制作这个应用程序,我让用户通过谷歌地图方向服务绘制一个航路点路线,目前我正在编辑路线页面上工作,用户可以在那里拖动路线的航路点来重新排序。我在获取当前拖航点的lat和lng时遇到问题 如何访问拖动端被拖动航路点对象的lat/lng 这是我的代码:Google maps 如何获得拖曳航点的lat和lng,google-maps,google-maps-api-3,maps,Google Maps,Google Maps Api 3,Maps,我正在制作这个应用程序,我让用户通过谷歌地图方向服务绘制一个航路点路线,目前我正在编辑路线页面上工作,用户可以在那里拖动路线的航路点来重新排序。我在获取当前拖航点的lat和lng时遇到问题 如何访问拖动端被拖动航路点对象的lat/lng 这是我的代码: <script type="text/javascript"> var rendererOptions = { draggable: true }; var phpway = <?php echo json_encode($
<script type="text/javascript">
var rendererOptions = {
draggable: true
};
var phpway = <?php echo json_encode($phpway); ?>;
var directionsDisplay = new google.maps.DirectionsRenderer(rendererOptions);;
var directionsService = new google.maps.DirectionsService();
var map;
var waypts = [];
for(var i = 0; i < phpway.length; i+=2){
waypts.push(new google.maps.LatLng(Number(phpway[i]), Number(phpway[i+1])));
}
var start = waypts[0];
var end = waypts[waypts.length-1];
var mywaypts = [];
var pointsArray = [];
for (var i = 1; i < waypts.length-1; i++) {
mywaypts.push({
location:waypts[i],
stopover:true});
}
var australia = new google.maps.LatLng(-25.274398, 133.775136);
function initialize() {
var mapOptions = {
zoom: 7,
center: australia
};
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
directionsDisplay.setMap(map);
directionsDisplay.setPanel(document.getElementById('directionsPanel'));
google.maps.event.addListener(directionsDisplay, 'directions_changed', function() {
//computeTotalDistance(directionsDisplay.getDirections());
calcRoute();
});
calcRoute();
}
function calcRoute() {
console.log(start);
var request = {
origin: start,
destination: end,
waypoints: mywaypts,
optimizeWaypoints: true,
travelMode: google.maps.TravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
}
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
在“directions_changed”事件处理程序中,处理从以下位置返回的新方向: directionsDisplay.getDirections。每条航段的起点/终点位置为航路点。注意,第一条航段的终点与第二条航段的起点相同
google.maps.event.addListener(directionsDisplay, 'directions_changed', function () {
document.getElementById('waypoints').innerHTML = "";
var response = directionsDisplay.getDirections();
var route = response.routes[0];
var path = response.routes[0].overview_path;
var legs = response.routes[0].legs;
for (i=0;i<legs.length;i++) {
document.getElementById('waypoints').innerHTML += legs[i].start_location.toUrlValue(6) +":";
document.getElementById('waypoints').innerHTML += legs[i].end_location.toUrlValue(6)+"<br>";
}
});
检查var dirs=directionsDisplay.getDirections;,可能使用console.logdirs;浏览一下请求格式
您将在dirs.request.origin下找到原点,在dirs.request.destination下找到目的地,在dirs.request.waypoints下找到航路点
要查找刚刚结束拖动的航路点,即使在第一次拖动之前,也应始终保留上一个请求,因为您首先加载要编辑的路线,并通过“航路点集”的简单迭代搜索上一个请求与当前请求之间的差异。我怀疑,无论是引入新的航路点还是移动已有的航路点,两者之间应该只有一个区别。这是你最后一个拖航点