Javascript 使用谷歌地图删除路线
我得到了一个使用谷歌地图方向服务功能的小应用程序。它工作得很好,我可以更改路由,但我有一个小问题,用户可以在跟踪路由后返回标记列表Javascript 使用谷歌地图删除路线,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我得到了一个使用谷歌地图方向服务功能的小应用程序。它工作得很好,我可以更改路由,但我有一个小问题,用户可以在跟踪路由后返回标记列表 我找不到用谷歌地图删除路线的方法。对于标记,我存储它们并执行设置映射(null),这里没有办法…如果使用DirectionsRenderer显示路线,也可以在其上调用设置映射(null)。这样可以删除显示的路线 在这里使用示例代码 就打电话 directionsDisplay.setMap(null); 您还可以使用: directionsDisplay.set
我找不到用谷歌地图删除路线的方法。对于标记,我存储它们并执行设置映射(null),这里没有办法…如果使用DirectionsRenderer显示路线,也可以在其上调用设置映射(null)。这样可以删除显示的路线 在这里使用示例代码 就打电话
directionsDisplay.setMap(null);
您还可以使用:
directionsDisplay.setDirections({routes: []});
通过这种方式,您可以继续对所有路线使用一个带有一个渲染器的贴图。其他答案对我不起作用。我从中找到了解决办法
定义
方向显示
仅1次(在单击
-处理程序之外)我遇到类似问题,我尝试使用方向显示.setMap(null)代码>但它不起作用
问题是我创建的directionsDisplay
对象是在本地声明的
我将其更改为全局,每次调用该函数时,它都将使用相同的全局方向display
对象并对其进行更改。这肯定会删除同一对象上显示的上一条路线。这是修复方法
// Clear past routes
if (directionsDisplay != null) {
directionsDisplay.setMap(null);
directionsDisplay = null;
}
设置strokeWeight:0,则多段线将隐藏,因为每次调用时,都会创建DirectionRenderer的新实例,这就是为什么每个新实例都不知道以前的实例
移动
到全局变量(位于所有其他全局变量已初始化的顶部。)
通过这样做,每次您都将使用DirectionRenderer的单个实例。重要的是——至少在我的情况下是这样的——虽然可以全局声明directionsDisplay
,但必须在map对象之后创建实例,否则会出现引用错误
var map;
var directionsDisplay;
function initMap() {
map = new google.maps.Map(...);
directionsDisplay = new google.maps.DirectionsRenderer(...);
}
function yourFunction() {
// your code
directionsDisplay.addListener(...);
}
这对我来说是一个更好的解决方案,因为如果您再次尝试获取方向,第一个解决方案将抛出JS错误。但是,我确实使用了directionsDisplay.setDirections({routes:[]})代码>我同意,使用文字是比使用新关键字更好的解决方案,我已经更新了我的答案。这不允许我继续使用相同的地图。它只是将路径堆叠在同一地图上。@ajbraus可能API已经更改,因为我回答了这个问题,我已经有一段时间没有检查它了。请考虑在回答之前的答案。Ajabu,你不提供你的代码,我只能假设你的代码有一些其他的错误。很可能是范围问题。如果您这样做,当您尝试用另一个路由覆盖时,它会返回,因此您会在地图上显示两个路由。这不是真的!我刚刚在一个小POC上测试过。运行directionsDisplay.setDirections(directions)
并使用directionsDisplay.setMap(map)
将渲染器添加回贴图时,它会正常工作。它只显示一条路径(方向的内容)。您的代码中一定存在其他问题。这可以从地图中删除directionsDisplay对象,但如果您要用另一条路线替换一条路线,则只会将替换的路线添加到地图中。如ajbraus所说,将显示2条或更多路线。未清洗。请参阅下面我的答案,它修复了问题最有用的答案!
var map;
var directionsDisplay;
function initMap() {
map = new google.maps.Map(...);
directionsDisplay = new google.maps.DirectionsRenderer(...);
}
function yourFunction() {
// your code
directionsDisplay.addListener(...);
}