2014-12-22 37 views
1

我正在使用數據層API將geojson數據添加到地圖。從添加了數據層API的geoJSON功能獲取標記參考

但問題是,addGeoJson方法返回的功能列表,我無法找到的接口方法來檢索與該功能相關的標記OBJ參考。

我不想在動態創建Google Marker對象,將它們添加到地圖並刪除該功能。這太過分了。

我只想在我離開數據層和管理自己的標記之前採取適當的方法。

謝謝,

Seb。

回答

1

我也有這個問題。我在API文檔中找不到太多東西。你需要一個Marker對象,你沒有它,因爲你將它們上傳到了數據層。

然而,在InfoWindow documentation,它說,你可以創建一個位置設置MVCObject。我在事件處理程序中做了以下。您不必將它放在地圖上,只需通過創建MVCObject並將其提交給infoWindow構造函數來處理click事件。

例子:

function initialize(mapID) { 
    var myLatlng = new google.maps.LatLng(38.951644, -92.334127); 
    var mapOptions = { 
     zoom: 12, 
     center: myLatlng 
    } 
    var map = new google.maps.Map(document.getElementById(mapID), mapOptions); 
    map.data.addGeoJson(realestate_js.geojson_results); 
    map.data.setStyle(function(feature){ 
     // setStyle executes this function on each feature... 
     // each feature then receives the "google.maps.Data.StyleOptions" object 
     // which defines its icons and stuff. 
     // https://developers.google.com/maps/documentation/javascript/3.exp/reference#Data.StyleOptions 
     return { 
      'clickable':true, 
      'icon':feature.A.icon, 
      'title':feature.A.address1, 
     } 
    }); 
    var fakeMarker = new google.maps.MVCObject(); 
    var infoWindow = new google.maps.InfoWindow({ 
     'content':"", 
    }); 
    map.data.addListener('click', function(event){ 
     fakeMarker.set('position', {'lat':event.latLng.A, 'lng':event.latLng.F}); 
     var infoWindow = new google.maps.InfoWindow({ 
      'content':"<h1>Info Window Content here</h1><p>omg this so text</p>" + , 
     }); 
     infoWindow.open(map, fakeMarker); 
    }); 
} 
+0

我相信A''和'F'是精縮內部名稱,和他們比我不同。相反,我做了'fakeMarker.set('position',event.latLng)'。 –