2014-03-19 47 views
0

我試圖獲得點擊GeoJSON的標記的自定義options.I可以做到這一點,如果我創建map.But標記當我從GeoJSON的不working.My代碼得到的是:小葉從GeoJSON的標記得到自定義選項

function onClick(e) { 
get_marker(this.options.marker_id); 
//geojson.features[64].options.marker_id) 
} 

get_marker()將標記的自定義標識定義爲像這樣的自定義標記。

customMarker = L.Marker.extend({ 
     options: { 
      marker_id: 'Custom data!', 
      name: '', 
      category: '', 
      information: '', 
      owner: '' 
     } 
    }); 

和我在這樣的地圖中創建標記。

map.on('click', function(e) { 
     newMarker[i] = new customMarker (e.latlng, { 
      draggable : true, 
      marker_id : 'new' 
     }).addTo(map); 
     newMarker[i].on('click', onClick); 

    newMarker[i].bindPopup("<b>Hello world!</b><br />I am a popup."); 
      //.openPopup(); 
    save_marker(newMarker[i]); 
    //$(".bilgi").val(newMarker.getPopup().getContent()); 
    i++; 
}); 

point.When我設置geojson.features [64] .options.marker_id作爲get_marker參數它works.But我不能控制哪個標記是clicked.Maybe我有我不能得到在以GeoJSON marker_id選項將geojson定義爲自定義標記,但我不知道。我該如何解決這個問題?

回答

0

我解決了我的問題。當我嘗試獲取geojson數據時,我創建了自定義標記並給出了marker_id,它現在可以工作。現在我認爲使用不同的標記類型很困難。當你在地圖上創建標記作爲用戶,並從服務器獲取geojson標記必須是相同的標記類型。因此使用相同的標記類型更好。

L.geoJson(data, { 
     onEachFeature : function(feature, layer) { 
      var popupContent = "marker_id = " + feature.options.marker_id; 
      if (feature.properties && feature.properties.popupContent) { 
       popupContent += feature.properties.popupContent; 
      } 
      layer.bindPopup(popupContent); 
      layer.on('click', onClick); 
     }, 
     pointToLayer : function(feature, latlng) { 
      return new customMarker(new L.LatLng(feature.geometry. 

      coordinates[1], feature.geometry.coordinates[0]), { 
       marker_id : feature.options.marker_id 
      }); 
     } 
    }).addTo(map);