簡體   English   中英

Google Maps API-Map.data范圍問題

[英]Google Maps API - Map.data scope issue

我正在嘗試通過執行以下操作將GeoJSON圖層添加到Google Maps(v3):

imageActive = {
    url: "images/target_red.png",
    origin: new google.maps.Point(0,0),
    anchor: new google.maps.Point(11, 11),
} // ACTIVE marker image

jQuery.getJSON('home/gcpts/geojson.php', function(data){
    points = map.data.addGeoJson(data);
    console.log(points); //this works
});

map.data.setStyle({
  clickable: true,
  draggable: false,
});

map.data.addListener('click', function(event){
  setActiveImage(event);
})

function setActiveImage(event){
  for(var i = 0;i<points.length;i++){ //can't read "length" of undefined
    points[i].revertStyles();
  }
  map.data.overrideStyle(event.feature, {
    icon: imageActive,
  });
}

但是,當我嘗試遍歷“ points”變量時,似乎無法“看到”它。 我主要是不確定的,或者如果我嘗試調用點的長度(points.length),那么它不存在。

如果我在jQuery函數中使用console.log(points),那么我可以看到該變量中的所有功能。 如果將它放在外面,則看不到它。 關於示波器,我有什么想念的嗎?

我希望我可以設置一個“ click”事件,並使用event.feature來覆蓋Style。 然后,當單擊其他要素時,該樣式將從其他geoJson要素中刪除,並覆蓋新單擊的要素。

似乎應該可以正常工作,但是我似乎無法弄清楚如何迭代這些功能。

謝謝!

(此外,我在“無沖突”模式下使用jQuery ...)

因為您沒有使用var關鍵字,所以所有變量都是全局范圍的。 似乎其他腳本正在尋找一個points變量並覆蓋您的變量。 假設您的代碼已經包裝在某種函數中(例如jQuery ready處理程序),則可以僅使用var來解決問題。 在調用getJSON()之前,我將添加以下代碼行:

var points = [];

前面的答案指出,您需要確保“ points”變量的范圍適當,但更好的答案是根本不需要該變量:由於您使用的是map.data,因此可以直接使用它來訪問要素,使用類似:

map.data.foreEch(function(feature) {console.log(feature);})

當然,必須注意您的“地圖”變量的范圍。

此外,您也不需要使用map.data.loadGeoJson(theUrl)您只需使用map.data.loadGeoJson(theUrl)加載數據map.data.loadGeoJson(theUrl)為您完成ajax

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM