android中循环在百度地图上添加标注后,怎样实现点击每个标注获取相应信息

android中循环在百度地图上添加标注后,怎样实现点击每个标注获取相应信息,第1张

01var map = new BMapMap("Mapcontainer");

02 var JsonObj = eval(JsonStr);

03 if (JsonObj != null) {

04 for (var i = 0; i < JsonObjlength; i++) {

05 (function (x) {

06 var point = new BMapPoint(JsonObj[x]Visit_GPS_Longitude, JsonObj[x]Visit_GPS_Latitude); // 创建点坐标

07 mapcenterAndZoom(point, 13);

08 var marker = new BMapMarker(point);

09 var opts = {

10 width: 250, // 信息窗口宽度

11 height: 100, // 信息窗口高度

12 title: '<span style="font-size:15px;color:#0A8021">' + JsonObj[x]CustomerName + '</span>' // 信息窗口标题

13 }

14 //markersetAnimation(BMAP_ANIMATION_BOUNCE);

15 var content = "进店时间 " + JsonObj[x]VisitBeginTime + "<br/>离店时间 " + JsonObj[x]VisitEndTime;

16 var info_Window = new BMapInfoWindow(content, opts); // 创建信息窗口对象

17 markeraddEventListener("click", function () {

18 thisopenInfoWindow(info_Window);

19 });

20 mapaddOverlay(marker);

21 })(i);

22 }

23 mapaddControl(new BMapNavigationControl());

var map = new BMapMap("Mapcontainer");

var JsonObj = eval(JsonStr);

if (JsonObj != null) {

for (var i = 0; i < JsonObjlength; i++) {

(function (x) {

var point = new BMapPoint(JsonObj[x]Visit_GPS_Longitude, JsonObj[x]Visit_GPS_Latitude); // 创建点坐标

mapcenterAndZoom(point, 13);

var marker = new BMapMarker(point);

var opts = {

width: 250, // 信息窗口宽度

height: 100, // 信息窗口高度

title: '<span style="font-size:15px;color:#0A8021">' + JsonObj[x]CustomerName + '</span>' // 信息窗口标题

}

//markersetAnimation(BMAP_ANIMATION_BOUNCE);

var content = "进店时间 " + JsonObj[x]VisitBeginTime + "<br/>离店时间 " + JsonObj[x]VisitEndTime;

var info_Window = new BMapInfoWindow(content, opts); // 创建信息窗口对象

markeraddEventListener("click", function () {

thisopenInfoWindow(info_Window);

});

mapaddOverlay(marker);

})(i);

}

mapaddControl(new BMapNavigationControl()); 同样是一个循环,但是在循环中使用了一个匿名函数,从而造成一个闭包将 i 的值锁定在里面,这样外部的值已经变化,

但是传到闭包里面的值已经被保留,也就可以顺利拿到应该取到的address[i]的内容了。

这样虽然解决了问题,但是每添加一个点都会创建一个匿名函数,内存泄漏可能会是潜在隐患。

接下去, 我们就可以自由的在地图上标注点并显示对应的信息了!

兄弟我也遇到过你这样的问题,如果我没猜错。你的: searchInfoWindowopen(marker);应该是写到循环里面的吧,无论点击哪个标注,d出来的信息窗口都是显示的最后一次循环定义的信息内容。

list是一个List,遍历List然后调用AMap对象的addMarker()方法就好。 for (int i = 0; i < listsize(); i++) { MarkerOptions marker = listget(i); aMapaddMarker(marker); } 关于MarkerOptions的创建: MarkerOptions option = new MarkerOp

注册百度账号,到百度地图的API申请个KEY,免费的key每天有固定的查询流量,付费就很多了。

申请了Key后,在你的Html 页面上引入js :

<script type="text/javascript" src=">

在HTML的Body中,放入一个div,用于显示地图的地方

<div id="allmap"></div>

写入显示到地图的图标js方法

<script type="text/javascript">

var map = new BMapMap("allmap");

var point = new BMapPoint(116400244,3992556);

mapcenterAndZoom(point, 12);

var marker = new BMapMarker(point);  // 创建标注

mapaddOverlay(marker);              // 将标注添加到地图中

markeraddEventListener("click",getAttr);

function getAttr(){

var p = markergetPosition();       //获取marker的位置

alert("marker的位置是" + plng + "," + plat);

}

</script>

保存后,打开您的HTML,界面将会显示出第四步的坐标地址 Point(116400244,3992556);

点击地图上的红色图标地址,将调用刚才写的

function getAttr(){

var p = markergetPosition();       //获取marker的位置

alert("marker的位置是" + plng + "," + plat);

}

方法,d出提示框。

这个方法,看具体需要调用什么方法,就写什么内容喽。

至此,入参坐标调用百度API显示到地图上的图标,方法实现。更多请查看百度API提供的方法,很丰富~

以上就是关于android中循环在百度地图上添加标注后,怎样实现点击每个标注获取相应信息全部的内容,包括:android中循环在百度地图上添加标注后,怎样实现点击每个标注获取相应信息、求助百度地图API的marker标注问题、怎么显示地图上所有的marker等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10159995.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存