在Google Map API上显示每个Waypoint Pin的标签

jum*_*noz 6 javascript label google-maps-api-3 google-maps-markers map-directions

我正在尝试为路线上的每个航路点添加一个标签,但我不太确定应该如何处理它.在做了一些研究之后,我知道你可以添加带标签的自定义引脚,但是当我手动丢弃每个引脚时.我怎么能这样做方向?

Tho*_*tos 5

如果您想从需要 hack 的 DirectionsRenderer 请求中访问标记,因为没有从 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);
      });
Run Code Online (Sandbox Code Playgroud)

但是,如果您想完全控制标记,这不是一个好的解决方案。如果您抑制标记,您有很多可能性,您可以使用来自诸如markerLabelRichMarker 之类的库中的标记(使用 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)
[...]
Run Code Online (Sandbox Code Playgroud)

更容易制作,更漂亮,更有趣! 在此处输入图片说明