h5高德地图javascript调起app导航定位多个marker

本文介绍了一个使用Ajax从服务器获取店铺位置数据,并将其显示在地图上的项目案例。通过解析返回的JSON数据,项目实现了在地图上添加标记并展示店铺名称的功能。然而,在尝试进行导航时遇到了问题:尽管地图上正确显示了所有标记,但导航功能只针对最后一个标记的位置工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近做的一个项目, 一开始以为是做路线规划, 后来说是做导航

记录下代码

// 获取商品集合集合并且传回来的是名称和经纬度

getShop : function(){
$.ajax({
       url : contextPath + '/service/mobile/pc/shop',
       type : 'POST',
       async : false,
       dataType : 'JSON'
   }).done(function(data, textStatus, jqXHR) {
      var _html = '';
      $.each(data.list, function(index, row){
      lnglats2.push(row);
      });
      pc.getView();
   });
},
getView : function(){
var lnglats = [];
$.each(lnglats2, function(index, row){
var lnglats3 = [];
lnglats3[0] = row[1];
lnglats3[1] = row[2];
lnglats.push(lnglats3);
});

for(var i = 0; i < lnglats.length; i++) {
var name = lnglats2[i][0];
var marker = new AMap.Marker({
position: lnglats[i], // 经纬度[21312312,34535435]
map: map
});
marker.setLabel({
               offset: new AMap.Pixel(20, 20),//修改label相对于maker的位置
               content: name // 店铺名称
           });

(function(x){  
marker.on("click", function(){  
this.markOnAMAP({
                    name:''+this.getLabel().content+'',
                    position:this.getPosition() // 经纬度
                })
       });
   })(i);  
}
}
map.addControl(new AMap.ToolBar());
在最后的时候, 地图上同时出现了多个标记,但是导航后,导航的地址是最后一个marker的位置, 是由于js闭包造成的; 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值