在天地图API中,进行循环添加点,添加Infowindow这个对大家都很容易,只是在传递Infowindow的参数时会存在一些问题。
var lnglatArr = data.split(',');
//设置显示地图的中心点和级别
if (lnglatArr.length % 6 == 0 && lnglatArr.length != 0) {
for (var j = 0; j < lnglatArr.length / 6; j++) {
map.centerAndZoom(new TLngLat(lnglatArr[4], lnglatArr[5]), zoom);
var icon = new TIcon("/Content/mapImgs/TIcon.png", new TSize(10, 13), { anchor: new TPixel(9, 27) });
var marker = new TMarker(new TLngLat(lnglatArr[j * 6 + 4], lnglatArr[j * 6 + 5]), { icon: icon });
arr1.push(marker);
map.addOverLay(marker);
var infoWin;
//添加信息窗口
var lnglat = new TLngLat(lnglatArr[j * 6 + 4], lnglatArr[j * 6 + 5]);
marker.txt = lnglatArr[j * 6] + "<br/>" + lnglatArr[j * 6 + 1] + "<br/>" + lnglatArr[j * 6 + 2] + "<br/>" + lnglatArr[j * 6 + 3] + "<br/>" +
lnglatArr[j * 6 + 4] + "<br/>" + lnglatArr[j * 6 + 5];
TEvent.addListener(marker, "mouseover", function () {
this.icon.setImageUrl("/Content/mapImgs/TIcon2.png", new TSize(10, 13), { anchor: new TPixel(9, 27) });
var lnglat2 = this.getLngLat();
infoWin = new TInfoWindow(lnglat2, new TPixel([0, 0]));
infoWin.setOffset(new TPixel(-3, -25));
infoWin.setLabel(this.txt + "<br/>" + lnglat2.getLng() + "," + lnglat2.getLat());
map.addOverLay(infoWin);
});
TEvent.addListener(marker, "mouseout", function () {
this.icon.setImageUrl("/Content/mapImgs/TIcon.png", new TSize(10, 13), { anchor: new TPixel(9, 27) });
infoWin.closeInfoWindow();
});
}
}
红色的位置是设置Infowindow显示的位置,只能写在事件监听外面,紫色的位置必须现获取这里的显示位置的经纬度才可以,不然每次传回来,只会传入lnglatArr数组的最后一个值。