0
首先,我想說,我一直在互聯網上查找了很長時間,一直無法找到答案,因此我的問題這裏。谷歌地圖api v2 map.removeOverlay()標記數組問題
我最近的學校項目是創建一個管理頁面,將文章添加到數據庫中,文章連接到谷歌地圖上的一個點。在地圖上添加點的要求是用戶能夠點擊一次地圖並生成標記,如果第二次點擊地圖時第一個標記移動到第二個地點。 (這是我正在努力。)
問題是,現在的代碼,我得到的錯誤,markersArray是未定義的。如果我放置var markersArray = new Array;在eventListener下面,然後我得到一個錯誤,說明main.js(googles文件)有錯誤,而第二個中的markersArray [0]未定義。我不得不使用谷歌地圖API v2,儘管它是舊的。
<script type="text/javascript">
//<![CDATA[
var map;
var markers = new Array;
function load() {
if (GBrowserIsCompatible()) {
this.counter = 0;
this.map = new GMap2(document.getElementById("map"));
this.map.addControl(new GSmallMapControl());
this.map.addControl(new GMapTypeControl());
this.map.setCenter(new GLatLng(57.668911, 15.203247), 7);
GDownloadUrl("genxml.php", function(data) {
var xml = GXml.parse(data);
var Articles = xml.documentElement.getElementsByTagName("article");
for (var i = 0; i < Articles.length; i++) {
var id = Articles[i].getAttribute("id");
var title = Articles[i].getAttribute("title");
var text = Articles[i].getAttribute("text");
var searchWord = Articles[i].getAttribute("searchWord");
var point = new GLatLng(parseFloat(Articles[i].getAttribute("lat")),
parseFloat(Articles[i].getAttribute("lng")));
var article = createMarker(point, id, title, text);
this.map.addOverlay(article);
}
});
}
var myEventListener = GEvent.bind(this.map,"click", this, function(overlay, latlng) {
if (this.counter == 0) {
if (latlng) {
var marker = new GMarker(latlng);
latlng1 = latlng;
this.map.addOverlay(marker);
this.counter++;
markers.push(marker); //This is where I get the error that markersArray is undefined.
}
}
else if (this.counter == 1) {
if (latlng){
alert (markers[0]);
this.map.removeOverlay(markers[0]);
var markers = [];
this.map.addOverlay(marker);
this.counter++;
}
}
});
}
function createMarker(point, id, title, text) {
var article = new GMarker(point);
var html = "<b>" + title + "</b> <br/>"
GEvent.addListener(article, 'click', function() {
window.location = "article.php?id=" + id;
});
return article;
}