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 = {
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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)