0

我通过设置两个 now 属性扩展了我的传单对象: - 值 - 名称

var customMarker = L.Marker.extend({
                options: {
                name: '',
                value: ''
                }
             });

然后我调用这个方法:

L.geoJson(centroids,{
              pointToLayer: function(feature,geometry){
                var marker = new customMarker(geometry);
                marker.value = donnees[feature.properties.Index];
                marker.name = feature.properties.Index;
                console.log("name : "+marker.name+" volume : "+marker.volume)
                return marker;
              }
        });

但我注意到并非所有的 marker.value 都存储在我的标记中。有些价值不明。

4

2 回答 2

2

您正在做的是在扩展的 L.Marker 中创建新选项。您可以在标记的实例化期间设置选项。简单的例子:

// Extending marker with custom option
L.Marker.Custom = L.Marker.extend({
     options: {
          customValue: false
     }
});

// Instanciating without custom option:
var marker = new L.Marker.Custom([0,0]);
console.log(marker.options.customValue); //false

// Instanciating with custom option:
var marker = new L.Marker.Custom([0,0], {
    customValue: true
});
console.log(marker.options.customValue); //true

问题是,如果您只需要一些自定义选项,则无需扩展 L.Marker 但您可以简单地使用自定义选项实例化 L.Marker:

// Instanciating regular L.Marker with custom option:
var marker = new L.Marker([0,0], {
    customValue: true
});
console.log(marker.options.customValue); //true

仅当您需要自定义选项的默认值时,才需要扩展 L.Marker。

于 2017-07-20T17:49:16.150 回答
1

看起来只是JS问题。在您的donnes数组中,您没有尝试访问的所有索引

marker.value = donnees[feature.properties.Index];

这就是为什么你在marker.value Check if中得到 undefineddonnees[feature.properties.Index]并没有给你 undefined ,然后才返回一个正确的标记

于 2017-07-20T18:36:49.877 回答