我正在尝试将InfoWindow添加到路线路线.有很多例子可以在标记上的事件监听器上添加InfoWindow.
但是,如何将InfoWindow移动到从一个标记到另一个标记的实际计划路线上.有人之前已经尝试过问这个问题,但没有回复(InfoWindow on Directions Route).
无论如何,我做了很多谷歌搜索,只发现了一个与此类似的问题,但是再次没有回应.
我infowindow.open(map,this)在回调中尝试了标记上的事件,但它会在标记位置打开InfoWindow.它只是我希望显示像谷歌一样的持续时间和距离.像附图中的东西
var infowindow2 = new google.maps.InfoWindow();
distanceService.getDistanceMatrix(distanceRequest, function (response, status) {
if (status == "OK") {
infowindow2.setContent(response.rows[0].elements[0].distance.text + "<br>" + response.rows[0].elements[0].duration.text + " ")
}
else {
alert("Error: " + status)
}
})
infowindow2.open(map, this);
Run Code Online (Sandbox Code Playgroud)

javascript google-maps infowindow directions google-directions-api
我使用谷歌绘图工具在谷歌地图上绘制多边形/矩形,现在我需要显示落在绘制多边形内的标记,为此我使用geometry.poly.containsLocation方法,它取一个点(latLng)和一个数组多边形点.如果我使用maps.polygon我可以通过poly.getPath()得到多边形点,但因为我使用的是Google绘图工具,它使用maps.drawing.DrawingManager/google.maps.drawing.OverlayType.POLYGON所以不知道如何在这里找到点.谢谢
var drawingManager = new google.maps.drawing.DrawingManager({
drawingMode: google.maps.drawing.OverlayType.POLYGON,
drawingControl: true,
drawingControlOptions: {
position: google.maps.ControlPosition.TOP_CENTER,
drawingModes: [
google.maps.drawing.OverlayType.MARKER,
google.maps.drawing.OverlayType.CIRCLE,
google.maps.drawing.OverlayType.POLYGON,
google.maps.drawing.OverlayType.POLYLINE,
google.maps.drawing.OverlayType.RECTANGLE
]
},
markerOptions: {
icon: 'images/car-icon.png'
},
circleOptions: {
fillColor: '#ffff00',
fillOpacity: 1,
strokeWeight: 5,
clickable: false,
editable: true,
zIndex: 1
},
polygonOptions: {
fillColor: '#BCDCF9',
fillOpacity: 0.5,
strokeWeight: 2,
strokeColor:'#57ACF9',
clickable: false,
editable: false,
zIndex: 1
}
});
console.log(drawingManager)
drawingManager.setMap(map)
Run Code Online (Sandbox Code Playgroud) 嗨,我正在尝试从信息窗口计划一条路线,但我无法删除之前设定的路线.我尝试了setMap(null)但它没有用.我正在使用一个事件监听器的回调,因为我需要传递从api调用返回的参数.一种选择是在每个事件上使用新的google.maps.map,例如标记上的(链接),但是在页面加载时我的标记已经放置.
element = document.getElementById('map-canvas');
map = new google.maps.Map(element, options);
var marker = new google.maps.Marker({
position: new google.maps.LatLng(car.lat, car.long),
map: map,
title: car.make
});
google.maps.event.addListener(marker, 'click', directionsCallback(car));
function directionsCallback(car) {
return function (e) {
if( infowindow != null ) {
infowindow.close();
}
var directionsService = new google.maps.DirectionsService();
directionsDisplay = new google.maps.DirectionsRenderer();
directionsDisplay.setMap(null);
console.log(directionsDisplay);
calcRoute = function(){
var startPoint = document.getElementById('clientAddress').value;
var finishPoint = new google.maps.LatLng(car.lat, car.long);
var request = {
origin: startPoint,
destination: finishPoint,
travelMode: google.maps.TravelMode.DRIVING
};
directionsService.route(request, function …Run Code Online (Sandbox Code Playgroud)