for(var temp=0;temp<jsonstr.totalCount;temp++) { arr[temp] = new Array(); var icon = new GIcon(); arr[temp][0] = jsonstr.data[temp].UserId; var terminal_type=jsonstr.data[temp].DataType; icon.image = "../images/map/er.png"; icon.shadow = null; //icon.iconSize = new GSize(50, 50); icon.iconAnchor = new GPoint(6, 20); icon.infoWindowAnchor = new GPoint(5, 1); var nowpoint = new GLatLng(jsonstr.data[temp].DataAfterLat, jsonstr.data[temp].DataAfterLng); var datapostime = jsonstr.data[temp].DataPosTime; var objtemp = {}; var un = jsonstr.data[temp].UserName+'('+datapostime.split(' ')[1]+')'; objtemp.labelText = un; objtemp.icon = icon; arr[temp][1] = new google.maps.LabelMarker(nowpoint, objtemp); //arr[temp][1] = new GMarker(nowpoint, icon); var er = arr[temp][1];
arr[temp] = new Array();
var icon = new GIcon();
arr[temp][0] = jsonstr.data[temp].UserId;
var terminal_type=jsonstr.data[temp].DataType;
icon.image = "../images/map/er.png";
icon.shadow = null;
//icon.iconSize = new GSize(50, 50);
icon.iconAnchor = new GPoint(6, 20);
icon.infoWindowAnchor = new GPoint(5, 1);
var nowpoint = new GLatLng(jsonstr.data[temp].DataAfterLat, jsonstr.data[temp].DataAfterLng);
var datapostime = jsonstr.data[temp].DataPosTime;
var objtemp = {};
var un = jsonstr.data[temp].UserName+'('+datapostime.split(' ')[1]+')';
objtemp.labelText = un;
objtemp.icon = icon;
arr[temp][1] = new google.maps.LabelMarker(nowpoint, objtemp);
//arr[temp][1] = new GMarker(nowpoint, icon);
var er = arr[temp][1];
//把此er添加到地图上
bounds.extend(nowpoint);
map.addOverlay(er); var addressinfo = '<table border="0"><tr><td style="color:#F09" width="60px" align="left" valign="top">定位地点:</td><td style="color:#F09" width="200px" align="left" valign="top">' + jsonstr.data[temp].DataPosPlace + '</br></td>'
+ '</tr><tr><td style="color:#F09" align="left" valign="top">定位时间:</td><td style="color:#F09" align="left" valign="top">' + jsonstr.data[temp].DataPosTime + '</td></tr>'
+ '</tr><tr><td style="color:#F09" align="left" valign="top">定位类型:</td><td style="color:#F09" align="left" valign="top">' + jsonstr.data[temp].DataPosType + '</td></tr>'
+ '</tr><tr><td style="color:#F09" align="left" valign="top">速度:</td><td style="color:#F09" align="left" valign="top">' + jsonstr.data[temp].DataSpeed + '</td></tr>'
+ '</tr><tr><td style="color:#F09" align="left" valign="top">方向:</td><td style="color:#F09" align="left" valign="top">' + jsonstr.data[temp].DataDirect + '</td></tr>'
+ '</table>';
//er.openInfoWindowHtml(addressinfo);
GEvent.addListener(er, "click", function showHtmlWindow() {
er.openInfoWindowHtml(addressinfo);
}); }
这是不正确的代码
var er = new google.maps.LabelMarker(nowpoint, objtemp);
GEvent.addListener(er, "click", function showHtmlWindow() {
er.openInfoWindowHtml(addressinfo);
});
return er;
}
for(var temp=0;temp<jsonstr.totalCount;temp++) {
arr[temp] = new Array();
var icon = new GIcon();
arr[temp][0] = jsonstr.data[temp].UserId;
var terminal_type=jsonstr.data[temp].DataType;
icon.image = "../images/map/er.png";
icon.shadow = null;
//icon.iconSize = new GSize(50, 50);
icon.iconAnchor = new GPoint(6, 20);
icon.infoWindowAnchor = new GPoint(5, 1);
var nowpoint = new GLatLng(jsonstr.data[temp].DataAfterLat, jsonstr.data[temp].DataAfterLng);
var datapostime = jsonstr.data[temp].DataPosTime;
var objtemp = {};
var un = jsonstr.data[temp].UserName+'('+datapostime.split(' ')[1]+')';
objtemp.labelText = un;
objtemp.icon = icon;
var addressinfo = '<table border="0"><tr><td style="color:#F09" width="60px" align="left" valign="top">定位地点:</td><td style="color:#F09" width="200px" align="left" valign="top">' + jsonstr.data[temp].DataPosPlace + '</br></td>'
+ '</tr><tr><td style="color:#F09" align="left" valign="top">定位时间:</td><td style="color:#F09" align="left" valign="top">' + jsonstr.data[temp].DataPosTime + '</td></tr>'
+ '</tr><tr><td style="color:#F09" align="left" valign="top">定位类型:</td><td style="color:#F09" align="left" valign="top">' + jsonstr.data[temp].DataPosType + '</td></tr>'
+ '</tr><tr><td style="color:#F09" align="left" valign="top">速度:</td><td style="color:#F09" align="left" valign="top">' + jsonstr.data[temp].DataSpeed + '</td></tr>'
+ '</tr><tr><td style="color:#F09" align="left" valign="top">方向:</td><td style="color:#F09" align="left" valign="top">' + jsonstr.data[temp].DataDirect + '</td></tr>'
+ '</table>';
arr[temp][1] = createMarker(nowpoint, objtemp, addressinfo);
//arr[temp][1] = new GMarker(nowpoint, icon);
var er = arr[temp][1];
//把此er添加到地图上
bounds.extend(nowpoint);
map.addOverlay(er);
}
这样写就是正确的
er.openInfoWindowHtml(addressinfo);本意应该是对arr[temp][1]添加click的监听事件,对操作根本不会起作用。
所以第二段,你封装成函数,每次循环都是对arr[temp][1]进行new google.maps.LabelMarker和addListener,所以正确。
又看了下,你试着把错误的那段代码的bounds.extend(nowpoint);
map.addOverlay(er);放到最后面,如果还是错误的话,可能GEvent.addListener(er, "click", function showHtmlWindow() {
er.openInfoWindowHtml(addressinfo);没有添加成功,多试着改下。