Javascript GoogleMapsJSAPI只加载第一条路径
我为我正在进行的一个项目创建了一个原型,在这个原型中,用户应该在地图中创建各种标记,能够删除它们,使用标记计算路线,然后返回管理标记 我使用geocodezip.com中的一些代码来计算路线,并为标记编写了一些代码,等等 我的问题是,一旦用户计算了路线,无论他如何编辑标记,当单击按钮计算路线时,地图仅返回带有他第一次单击按钮时存在的标记的路线。最奇怪的是,我检查了传递给生成路由的脚本的坐标,函数发送了它应该发送的标记,但是不管发送的坐标是什么,它只在第一次正确工作 Js小提琴:Javascript GoogleMapsJSAPI只加载第一条路径,javascript,google-maps-api-3,Javascript,Google Maps Api 3,我为我正在进行的一个项目创建了一个原型,在这个原型中,用户应该在地图中创建各种标记,能够删除它们,使用标记计算路线,然后返回管理标记 我使用geocodezip.com中的一些代码来计算路线,并为标记编写了一些代码,等等 我的问题是,一旦用户计算了路线,无论他如何编辑标记,当单击按钮计算路线时,地图仅返回带有他第一次单击按钮时存在的标记的路线。最奇怪的是,我检查了传递给生成路由的脚本的坐标,函数发送了它应该发送的标记,但是不管发送的坐标是什么,它只在第一次正确工作 Js小提琴: 代码真的很长,所
代码真的很长,所以一切都在掌握之中,但它就是这样做的:
1.用户单击地图,生成标记,标记进入数组
2.如果用户删除标记,它在数组中变为null,以维护索引
3. '“清除”标记数组按顺序接收所有标记,不包含空项
4.使用所有标记调用一个函数,该函数创建路由
5.为了管理标记,一个函数会像开始时一样重新加载地图,但会渲染标记数组中已经存在的所有标记,因此我相信这就是正在发生的事情
在函数markMap()
中,您正在实例化属于google map对象的新标记
for (var i = 0; i < markerElements.length; i++){ //Loop para gerar os marcadores
if (markerElements[i] != null){
marker = new google.maps.Marker({
position: markerElements[i].position,
map: map,
title: markerElements[i].title
});
}
}
现在我们可以在数组中循环,并将setMap
设置为null
// un-reference marker from map
markerGlobal[2].setMap(null);
我看到您尝试使用removeMarker()
函数来执行此操作,但它没有已添加到地图的标记的句柄
一些建议
如果我是你,我会考虑重构代码,使之成为一个包含所有标记、它们的行信息、变量等的多维对象
您可以更进一步,创建一个构造函数来处理映射及其相关标记。这将是最有效的
祝你好运。以下是我相信正在发生的事情
在函数markMap()
中,您正在实例化属于google map对象的新标记
for (var i = 0; i < markerElements.length; i++){ //Loop para gerar os marcadores
if (markerElements[i] != null){
marker = new google.maps.Marker({
position: markerElements[i].position,
map: map,
title: markerElements[i].title
});
}
}
现在我们可以在数组中循环,并将setMap
设置为null
// un-reference marker from map
markerGlobal[2].setMap(null);
我看到您尝试使用removeMarker()
函数来执行此操作,但它没有已添加到地图的标记的句柄
一些建议
如果我是你,我会考虑重构代码,使之成为一个包含所有标记、它们的行信息、变量等的多维对象
您可以更进一步,创建一个构造函数来处理映射及其相关标记。这将是最有效的
祝你好运。如果在tour\u启动
函数定义中删除条件if(!window.tour)
,则效果良好 如果在tour\u启动
函数定义中删除条件if(!window.tour)
,则可以正常工作 谢谢,它解决了持久化路由的问题。谢谢,它解决了持久化路由的问题。谢谢,这是我第一次使用Google Maps Js API进行开发,所以我不使用代码,因为时间有点长,我已经在代码中发现了很多简单的问题。您帮助我解决了可视化管理标记的问题(我真的忘了在我的问题中谈论这个bug)。然而,阿尔菲尤姆的回答解决了我所问的问题,这是坚持的第一条路线。关于构造器,谢谢你的想法,我计划随着时间的推移使代码更加抽象和优化,但现在我只需要一个工作原型。@BrunoVaz它确实有很多东西需要消化。我将继续修复代码,因为通过删除tour_启动中的if语句来重新加载map对象不如管理屏幕上已经存在的map有效。(我想这就是我的行为,我没有检查)。听起来你在正确的道路上。谢谢,这是我第一次使用谷歌地图Js API进行开发,所以我没有使用代码,因为时间有点长,我已经在代码中发现了很多简单的问题。您帮助我解决了可视化管理标记的问题(我真的忘了在我的问题中谈论这个bug)。然而,阿尔菲尤姆的回答解决了我所问的问题,这是坚持的第一条路线。关于构造器,谢谢你的想法,我计划随着时间的推移使代码更加抽象和优化,但现在我只需要一个工作原型。@BrunoVaz它确实有很多东西需要消化。我将继续修复代码,因为通过删除tour_启动中的if语句来重新加载map对象不如管理屏幕上已经存在的map有效。(我想这就是我的行为,我没有检查)。听起来你走的路是对的。