我在C#调用JS进行百度地图定位,其中C#不断传入经纬度,然后js进行标注,在更新标注时我采用删除重复的标注然后再标注过来的数据。这是js代码
function DrawPoint()
{
var Array = [];
var total_num =3;
for( var i=0;i<total_num;i++)
{
Array.push(window.external.Getpoints(i));
}
var point = new BMap.Point(Array[0], Array[1]);
deletePoint(Array[2]);
trans(Array[0], Array[1]);
}
translateCallback=function addaddess(point)
{
var Array = [];
var total_num = 3;
for (var i = 0; i < total_num; i++) {
Array.push(window.external.Getpoints(i));
}
var Carnum = Array[2];
var marker=new BMap.Marker(point);
map.addOverlay(marker);
var label = new BMap.Label(Carnum, { "offset": new BMap.Size(9, -15) });
marker.setLabel(label);
map.setZoom(14);
}
function trans(x,y){
var BDPoint=new BMap.Point(x,y);
BMap.Convertor.translate(BDPoint,0,translateCallback); //真实经纬度转成百度坐标
}
function deletePoint(num) {
var allOverlay = map.getOverlays();
for (var i = 1; i < allOverlay.length; i++) {
if (allOverlay[i].getLabel().content == num) {
map.removeOverlay(allOverlay[i]);
return false;
}
}
}
在运行的时候第一个点可以标注,到第二个点时就有可能会出现getLabel().content,可是我用alert("marker的名称是"+allOverlay[i].getLabel().content);显示数据是对的。搞不懂这是为什么,求大神指导。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
同求结果
,不过我发现这个跟缓存似乎有关系,彻底清空缓存后,一切正常,重新打开页面或者刷新了页面,这个问题必然出现
不知道是不是百度api的bug
已找到解决方法,先判断overlay类型,在调用对应类型的的方法
function getMapLabel(imei) {