刷新Google地图阻止添加标记的能力

问题描述:

我在'刷新'我的Google地图后遇到问题,我无法单独放置标记(单击)。但在刷新我的地图(初始化之前)之前,我可以通过单击来放置标记。我可以知道代码有什么问题吗?刷新Google地图阻止添加标记的能力

下面是我的代码...

//Initialize the map 
function initialize() { 
    var myLatlng = new google.maps.LatLng(2,110); 
    var myOptions = { 
     zoom: 3, 
     center: myLatlng, 
     mapTypeId: google.maps.MapTypeId.HYBRID 
    }; 
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
    infowindow = new google.maps.InfoWindow({ 
     content: "loading..." 
    }); 
} 

// Listen for click for markers 
function marker() 
{ 
    google.maps.event.addListener(map, 'click', function(event) { 
     addMarker(event.latLng); 
    }); 
} 

// Place markers in by click 

function addMarker(location) { 
    marker = new google.maps.Marker({ 
     position: location, 
     map: map, 
     title:"Specified Location", 
     icon: 'images/greenPoint.png' 
    }); 
    markersArray.push(marker); 
} 


function refreshMap() 
{ 
    var myLatlng = new google.maps.LatLng(1.1,107); 
    var myOptions = { 
     zoom: 4, 
     center: myLatlng, 
     mapTypeId: google.maps.MapTypeId.HYBRID 
    }; 
    map = new google.maps.Map(document.getElementById("map_canvas"), 
    myOptions); 
} 

如果我理解你的问题正确的话,你说你叫refreshMap功能后,您的地图不工作。听起来像一个范围界定问题,其中map变量第二次处于不同的范围。尝试把这一行:

var map = null; 

在文件的最顶端,以确保所有的map引用的是同一个全局变量map

+0

嗨科林,但我已经把变种地图;作为一个全球变量。 – 2010-11-25 01:08:30

为什么要首先创建一个新的google.maps.Map对象?你应该做这样的事情,而不是:

function refreshMap() 
{ 
    var myLatlng = new google.maps.LatLng(1.1,107); 
    var myOptions = { 
     zoom: 4, 
     center: myLatlng, 
    }; 
    map.setOptions(myOptions); 
} 
+0

嗨,Eric,或许我没有让我的问题听起来更清晰。例如,在我初始化我的地图后,我放下了一些标记。之后,我按下refreshMap()按钮(这将允许我清除所有标记),然后再次按下marker()函数后,我将能够再次放下标记...因为我做了什么现在,刷新我的地图后,当我按下功能添加标记后,我无法添加任何东西。谢谢 – 2010-11-25 01:12:54

使用您的markersArray你应该能够清楚使用方法从这里地图:Google Maps API v3: How to remove all markers?

function clearOverlays() { 
    for (var i = 0; i < markersArray.length; i++) { 
    markersArray[i].setMap(null); 
    } 
    markersArray = []; 
}