传单从geojson标记获取自定义选项

时间:2014-03-19 08:11:42

标签: leaflet marker geojson

我想点击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定义为一个自定义标记,但我不知道。我怎么能解决这个问题?

1 个答案:

答案 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);