我在Google Map上做二次开发,遇到一些问题:标记点的位置我放到了数据库中,显示地图的时候从数据库把所有位置数据取出来,然后放到MarkerManager中显示。当点击标记点的时候,再显示该标记点的相关信息。可是点击标记点的时候总是有个js错误:‘this.Eg’为空或不是对象。不知道是哪里出了问题,请大家指点。代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Map.aspx.cs" Inherits="Map" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
    <style type ="text/css">
        div{font-size:12px;}
    </style>
</head>
<script src="http://ditu.google.cn/maps?file=api&amp;v=2&amp;key=abcdefg&sensor=true_or_flase" type="text/javascript"></script>
<script src="js/ermanager.js" type ="text/javascript" ></script>
<script type="text/javascript">
var CheckGMark=false;
var batch=[];
var map;
var mgr;
function initialize(){
if(GBrowserIsCompatible()){
map=new GMap2(document.getElementById("map_canvas"));
map.setMapType(G_HYBRID_MAP);
map.setCenter(new GLatLng(38.27838219702579,111.67418003082275),15);

        //滚轮缩放
        map.enableScrollWheelZoom();
//显示控制条
map.addControl(new GLargeMapControl());   
        map.addControl(new GMapTypeControl()); 
        //显示按钮
map.addControl(new control_Del());
map.addControl(new control_Add());
window.setTimeout(setupThingsMarkers, 0);
}
}
var _temp ;
function getThingsMarkers() {   
    var scat = new Array();
    scat = subcat01;
    for(var i=0;i<scat.length ;i++){
        var newPoint=new GLatLng(scat[i][1], scat[i][0]);
        var icon = new GIcon();
        if(scat[i][6]=="" || scat[i][6]==null){
            icon.image = "images/er_green.png";
        }else{
            icon.image = scat[i][6];
        }
    icon.iconAnchor = new GPoint(6, 20);
        var er = new GMarker(newPoint,icon); 
        
        var aa=scat[i][2];
        var _tag11 = new clickTag(newPoint,aa);
        GEvent.addListener(er,"click",addListener(er,_tag11));
        batch.push(er); 
    }
    return batch;   
}function addListener(pointMarker,tag) {  
    GEvent.addListener(pointMarker, "click", function(){    
        map.openInfoWindowHtml(pointMarker.getPoint(),"显示事件内容<br><a href=# onclick='delthis(er)'>删除</a>");
    });    
}function vv(tag){
    alert(tag.tpoint);
    alert(tag.time);
}function clickTag(arg1,arg2)
{
    this.tpoint = arg1;
    this.time = arg2;
}function setupThingsMarkers(){
    mgr = new MarkerManager(map);   
    mgr.addMarkers(getThingsMarkers(),15);     
    mgr.refresh(); 
}//删除按钮
function control_Del() {};
control_Del.prototype = new GControl();
control_Del.prototype.initialize = function(map){
var buttonDiv=document.getElementById ("divDel")
buttonDiv.onclick = function(){
map.clearOverlays();
CheckG=false;
};
map.getContainer().appendChild(buttonDiv);
return buttonDiv;
};
 
control_Del.prototype.getDefaultPosition = function(){
return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(520, 8));
};//添加按钮
function control_Add() {};
control_Add.prototype = new GControl();
control_Add.prototype.initialize = function(map){
var buttonDiv=document.getElementById ("divAdd") buttonDiv.onclick = function(){
//显示保存div
if(CheckGMark){
document.getElementById("things_canvas").style.display='';
}else{
alert("请确定标记地点");
}
};
map.getContainer().appendChild(buttonDiv);
return buttonDiv;
};
 
control_Add.prototype.getDefaultPosition = function(){
return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(438, 8));
};function delthis(){
    map.removeOverlay(er1);
map.removeControl(er1);  
    map.closeInfoWindow();
}function addc(_obj)
{
    document.getElementById("test").innerHTML += "<BR>" + _obj;
}
</script><body onload="initialize()" onunload="GUnload()">
<div id="test"></div>
    <form id="form1" runat="server">
    <asp:Label ID="FieldItem" runat ="server" ></asp:Label>
    <div id="map_canvas" style="width:800px;height:600px"></div>
    <div id="things_canvas"  style="display: none; position: absolute; top: 30%;  left: 30%; width:400px; height: 300px; padding: 16px; border: 1px solid blue; 
                            background-color: white; z-index:1002; overflow: auto;"></div>
    <div id="divDel" style ="width:80px;height:17px;background-color:#ffffff;border:1px solid #000000;text-align:center;cursor:hand">取消标记</div>
    <div id="divAdd" style ="width:80px;height:17px;background-color:#ffffff;border:1px solid #000000;text-align:center;cursor:hand">添加事件</div>
    </form>
</body>
</html>

解决方案 »

  1.   

    "显示事件内容<br><a href=# onclick='delthis(er)'>删除</a>"
    这里,你传了个参数.function delthis() {
    map.removeOverlay(er1);
    map.removeControl(er1);
    map.closeInfoWindow();
    }
    这里却没有那个参数的事情了.
    这样试试:
    function delthis(er1) {
    map.removeOverlay(er1);
    map.removeControl(er1);
    map.closeInfoWindow();
    }
      

  2.   

    js/ermanager.js 请问这个脚本是怎么得到的啊?? 我是个菜鸟  想用用着个脚本  [email protected] 可不可以发给我