我有一个使用谷歌地图的方向服务功能的小应用程序。它工作得很好,我可以更改路线,但是我有一个小问题,就是当用户跟踪一条路线后,他可以返回到标记列表。
我找不到在谷歌地图上删除路线的方法。对于标记,我存储它们并执行setMap(null)
,但没有看到相关的方法...
我有一个使用谷歌地图的方向服务功能的小应用程序。它工作得很好,我可以更改路线,但是我有一个小问题,就是当用户跟踪一条路线后,他可以返回到标记列表。
我找不到在谷歌地图上删除路线的方法。对于标记,我存储它们并执行setMap(null)
,但没有看到相关的方法...
你也可以使用:
directionsDisplay.setDirections({routes: []});
以这种方式,您可以在所有路由中使用一个地图和一个渲染器。directionsDisplay.setMap(null);
directionsDisplay.setDirections(directions)
并使用directionsDisplay.setMap(map)
将渲染器重新添加到地图上时,它会正确地工作。它只显示一条路径(即directions
变量的内容)。你的代码肯定还有其他问题。 - Tomik这是修复方案
// Clear past routes
if (directionsDisplay != null) {
directionsDisplay.setMap(null);
directionsDisplay = null;
}
因为每次调用都会创建新的 DirectionRenderer 实例,所以每个新实例都不知道之前的实例。
移动
var directionsDisplay = new google.maps.DirectionsRenderer();
将其添加到全局(在所有其他全局变量已初始化的顶部)。
这样做可以确保您每次都使用DirectionRenderer的单个实例。
directionsDisplay.setMap(null);
,但它没有起作用。directionsDisplay
对象被局部声明了。directionsDisplay
对象并对其进行更改。这肯定会删除在同一对象上显示的先前路线。这很重要 - 至少在我的情况下是这样的 - 虽然directionsDisplay
可以全局声明,但实例必须在地图对象之后创建,否则会出现引用错误
var map;
var directionsDisplay;
function initMap() {
map = new google.maps.Map(...);
directionsDisplay = new google.maps.DirectionsRenderer(...);
}
function yourFunction() {
// your code
directionsDisplay.addListener(...);
}
设置 strokeWeight: 0,那么折线将会隐藏
directionsDisplay.setDirections({routes: []});
。 - DemitryT