我有一个使用谷歌地图的方向服务功能的小应用程序。它运行良好,我可以改变路线,但我遇到一个小问题,用户可以在追踪路线后回到标记列表。
我找不到用谷歌地图删除路线的方法。对于标记我存储并执行setMap(null)
,在这里看不到方法......
答案 0 :(得分:48)
你也可以使用:
directionsDisplay.setDirections({routes: []});
通过这种方式,您可以继续为所有路线使用一个带有一个渲染器的地图。
答案 1 :(得分:32)
如果您使用DirectionsRenderer显示路线,您也可以在其上调用setMap(null)。这样就可以删除显示的路径。
在此处使用示例代码 http://code.google.com/apis/maps/documentation/javascript/examples/directions-simple.html
只需致电
directionsDisplay.setMap(null);
答案 2 :(得分:6)
因为在每次调用时,DirectionRenderer的新实例都会创建这就是为什么每个新实例都不知道之前的实例。
移动
var directionsDisplay = new google.maps.DirectionsRenderer();
到全局(在所有其他全局变量已初始化的顶部。)
通过这样做,每次使用DirectionRenderer的单个实例。
答案 3 :(得分:5)
其他答案对我不起作用。我找到了this question
的解决方案仅定义directionsDisplay
一次(在click
- 处理程序之外)
答案 4 :(得分:5)
这是修复
// Clear past routes
if (directionsDisplay != null) {
directionsDisplay.setMap(null);
directionsDisplay = null;
}
答案 5 :(得分:1)
我有类似的问题,我尝试使用send
,但它没有用。
问题是我创建的directionsDisplay.setMap(null);
对象是在本地声明的。
我将其更改为全局,每次调用该函数时,它将使用相同的全局directionsDisplay
对象并对其进行更改。这肯定会删除同一对象上显示的先前路线。
答案 6 :(得分:0)
设置strokeWeight:0然后折线将隐藏
答案 7 :(得分:0)
重要的是-至少在我的情况下-directionsDisplay
可以全局声明,但必须在map对象之后创建实例,否则会产生引用错误
var map;
var directionsDisplay;
function initMap() {
map = new google.maps.Map(...);
directionsDisplay = new google.maps.DirectionsRenderer(...);
}
function yourFunction() {
// your code
directionsDisplay.addListener(...);
}