谷歌地图方向服务API'拖动以更改路线'文本更改

时间:2016-11-23 06:44:50

标签: google-maps google-maps-api-3

我已成功实施了谷歌地图方向服务api:https://developers.google.com/maps/documentation/javascript/directions并启用了“draggble”选项。是否可以在悬停路线时更改拖动按钮(附加屏幕截图)的文本标签?目前它说:'拖动改变路线'。我需要修改它。我检查了文档:https://developers.google.com/maps/documentation/javascript/reference,但找不到任何相关内容。

当前代码类似于:https://developers.google.com/maps/documentation/javascript/examples/directions-draggable

请帮帮我。提前谢谢!

enter image description here

更新:我刚刚投票支持:“有太多可能的答案,或者这种格式的答案太长了。请添加细节以缩小答案范围设置或隔离可以在几个段落中回答的问题。“。该代码在提供的网址中提供,我认为只有一种解决方案可以使用谷歌地图API。如果需要任何其他信息,请添加评论。

1 个答案:

答案 0 :(得分:1)

可能我的答案会被低估,但也许对你有用。让我们说这只是一个想法。因此,您可以在方向更改后更改路径的工具提示。

    directionsDisplay.addListener('directions_changed', function() {
        directionsDisplay.gd.b.setTitle('This is your new tooltip for the route.');
    });

但不幸的是,在directions_changed事件发生时还没有标记,所以你应该推迟设置标题:

      for (var i = 0; i < directionsDisplay.b.G.length; i++){
        directionsDisplay.b.G[i].setTitle('Marker ' + i + ' tooltip');
      }

更新: 更通用的代码:

    directionsDisplay.addListener('directions_changed', function() {
        setRouteTitle(directionsDisplay, 'The new tooltip');
    });

    function setRouteTitle(dirsDispl, newTitle){
        var ddObjKeys = Object.keys(dirsDispl);
        for (var i = 0; i < ddObjKeys.length; i++){
            var obj = dirsDispl[Object(ddObjKeys)[i]];
            var ooObjKeys = Object.keys(obj);
            for (var j = 0; j < ooObjKeys.length; j++){
                var ooObj = obj[Object(ooObjKeys)[j]];
                if ((ooObj) && (ooObj.hasOwnProperty('title')) && (ooObj.hasOwnProperty('shape')) && (ooObj.shape.type == 'circle')){
                    ooObj.setTitle(newTitle);
                }
            }
        }
    };

希望这有帮助。