我想点击geojson标记的自定义选项。如果我在map中创建标记,我可以这样做。但是当我从geojson无法工作时。我的代码是:
function onClick(e) {
get_marker(this.options.marker_id);
//geojson.features[64].options.marker_id)
}
get_marker()接受标记的自定义ID,我将其定义为自定义标记。
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++;
});
我无法在geojson点获得marker_id选项。当我将geojson.features [64] .options.marker_id设置为get_marker参数时,它可以工作。但是我无法控制点击哪个标记。也许我必须将geojson定义为一个自定义标记,但我不知道。我怎么能解决这个问题?
答案 0 :(得分: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);