在天地图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数组的最后一个值。