//循环添加点 for (var i = 0; i < json.stations.length; i++) { var lnglat = new TLngLat(parseFloat(json.stations[i].Longitude), parseFloat(json.stations[i].Latitude)); if (i == 0) { map.centerAndZoom(lnglat, zoom); } var er = new TMarker(lnglat);
//使用闭包的形象注册事件 (function () { //在闭包中保存的局部变量 var m = er; var id = json.stations[i].RecorderId; //注册单击事件 erclick = TEvent.addListener(m, "click", function(){ onClick(m, id); }); })(); map.addOverLay(er); } } //关闭信息窗 function onClose(){ map.removeOverLay(customerWinInfo); }
customerWinInfo.setLabel(html.join(''));否则你要将map和customerWinInfo变量都设置为widow作用域下的。。你在$里面申明,只在那个匿名函数中能引用到。字符串里面设置的事件是window作用域下的才能访问
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>天地图-地图API-范例-自定义信息窗口</title>
<script type="text/javascript" src="http://api.tianditu.com/js/maps.js"></script>
<script type="text/javascript" type="text/javascript">
var map,zoom=12;
var customerWinInfo=null;
function onLoad() {
//初始化地图对象
map=new TMap("mapDiv");
//设置显示地图的中心点和级别
map.centerAndZoom(new TLngLat(116.40969,39.94940),zoom);
//允许鼠标双击放大地图
map.enableHandleMouseScroll();
//模拟的数据
var json = {
"stations" : [{
"Longitude" : 116.404,
"Latitude" : 39.915,
"RecorderId": 1
},{
"Longitude" : 116.383752,
"Latitude" : 39.91334,
"RecorderId": 2
},{
"Longitude" : 116.384502,
"Latitude" : 39.932241,
"RecorderId": 3
}
]
};
//循环添加点
for (var i = 0; i < json.stations.length; i++) {
var lnglat = new TLngLat(parseFloat(json.stations[i].Longitude), parseFloat(json.stations[i].Latitude));
if (i == 0) {
map.centerAndZoom(lnglat, zoom);
}
var er = new TMarker(lnglat);
//使用闭包的形象注册事件
(function () {
//在闭包中保存的局部变量
var m = er;
var id = json.stations[i].RecorderId;
//注册单击事件
erclick = TEvent.addListener(m, "click", function(){
onClick(m, id);
});
})();
map.addOverLay(er);
}
} //关闭信息窗
function onClose(){
map.removeOverLay(customerWinInfo);
}
//单击点
function onClick(er, id){
var html=[];
html.push('<div style="background:#CCCC99;height:20px;color:#000;width:135px;">');
html.push(' <span style="width:100px;float:left;margin-left:2px;background:">标题'+id+'</span><span style="width:30px;float:right;margin-right:2px;" onclick="onClose();">关闭</span>');
html.push('</div>');
html.push('<div id="deliver-legend-ctrl" style="background:#fff;border:1px solid #C0C0C0;">');
html.push(' <table cellspacing="0" cellspadding="0" style="width:130px;border:1px solid #ff0000;">');
html.push(' <tr align="center" style="height:10px;">');
html.push(' <td></td>');
html.push(' <td><a herf="javascript:void(0);"></a></td>');
html.push(' </tr>');
html.push(' <tr align="center">');
html.push(' <td>经度:</td>');
html.push(' <td>'+er.getLngLat().getLng()+'</td>');
html.push(' </tr>');
html.push(' <tr align="center">');
html.push(' <td>纬度:</td>');
html.push(' <td>'+er.getLngLat().getLat()+'</td>');
html.push(' </tr>');
html.push(' <tr style="height:10px;">');
html.push(' <td></td>');
html.push(' <td><a herf="javascript:void(0);"></a></td>');
html.push(' </tr>');
html.push(' </table>');
html.push('</div>');
var config = {
offset:new TPixel(0,0),
position:er.getLngLat()
};
if(customerWinInfo) {
onClose();
}
customerWinInfo=new TLabel(config);
customerWinInfo.setTitle('');
customerWinInfo.setLabel(html.join(''));
customerWinInfo.getObject().style.zIndex = 10000;
map.addOverLay(customerWinInfo);
}
</script>
</head>
<body onLoad="onLoad()">
<div id="mapDiv" style="position:absolute;width:600px; height:500px;"></div>
</body>
</html>