我正在尝试为路线上的每个航路点添加一个标签,但我不太确定应该如何处理它。在做了一些研究之后,我知道您可以添加一个带有标签的自定义图钉,但那是我手动放下每个图钉的时候。我怎样才能做到这一点的方向?
问问题
3607 次
1 回答
5
如果您想从 DirectionsRenderer 请求中访问需要 hack 的标记,因为没有官方方法可以从 google map api 执行此操作。
有一种方法,这是我做的一个例子:https ://jsfiddle.net/TomKarachristos/cna78jbw/
google.maps.event.addListener(directionsDisplay, 'directions_changed',
function() {
var self = this;
markersArray = []; //empty the array
setTimeout(function() { //wait until markers render
for (var k in self) { //search everything in directionsDisplay
if (typeof self[k].markers != 'undefined') { // its that the markers?
var markers = self[k].markers;
for (var i = 0; i < markers.length; ++i) {
markersArray.push(markers[i]);
markersArray[i].setLabel({ //lets change the label!
color: "white",
fontSize: "16px",
text: i.toString()
});
}
}
}
console.log(markersArray); // now markersArray have all the markers
}, 0);
});
但是,如果您想要完全控制标记,这不是一个好的解决方案。如果您抑制标记,您有很多可能性,您可以使用诸如markerLabel或RichMarker 之类的库中的标记(使用 dom 元素作为标记!)
这里是markerLabel 的示例,您单击地图中的任意位置,然后会出现一个标记,其中带有与中心标记的距离的标签。 https://jsfiddle.net/TomKarachristos/x1zg503m/
[...]
markerArray[1] = new MarkerWithLabel({
position: location,
map: map,
animation: google.maps.Animation.DROP, //just for fun
labelContent: "",
labelClass: "marker-label"
});
[...]
if (status === google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
route = directionsDisplay.getDirections().routes[0];
markerArray[1].set('labelContent', route.legs[0].distance.value / 1000)
[...]
于 2016-04-12T08:42:56.670 回答