2017-09-06 19 views
0

いくつかの機能プロパティに基づいて、個々のマーカーまたはサイズ1のクラスターのスタイルを設定しようとしています。マーカークラスタの個々のマーカーのスタイル付け

var markers = L.markerClusterGroup(); 

function onEachFeature(feature, layer) { 
    if (feature.properties.EncounterType && feature.properties.Year) { 
    layer.bindPopup(feature.properties.EncounterType + " in " + 
     feature.properties.Year); 
    } 
} 

function style(feature) { 
    switch (feature.properties.EncounterType) { 
    case 'Shooting': 
     return { 
     color: "ff0000" 
     }; 
    case 'Sighting': 
     return { 
     color: "0000ff" 
     }; 
    case 'Hunting': 
     return { 
     color: "ff0000" 
     }; 
    } 
} 

var geoJsonLayer = L.geoJSON(storer, { 
    onEachFeature: onEachFeature 
}, { 
    style: style 
}); 

markers.addLayer(geoJsonLayer); 
map.addLayer(markers); 

onEachFeature関数は、ポップアップを正常に作成します。ただし、スタイル関数は、サイズ1のクラスターの色を変更しません。マークメルターグループを初期化するときにiconCreateFunctionを使用してみましたが、どちらも機能しませんでした。それはonEachFeatureオプションと並んで、第二引数内に配置されている必要があり、一方、

答えて

0

あなたstyleオプションは、L.geoJSON工場にお電話の第三引数に分離されています。

var geoJsonLayer = L.geoJSON(storer, { 
    onEachFeature: onEachFeature, 
    style: style 
}); 

しかし、それはおそらくあなたの問題の唯一の理由ではありません。

styleオプションは、ベクトル形状(ポリライン、ポリゴンなど)、つまり非ポイントデータに適用されます。サークルマーカーに適用することもできますが、これはPointタイプのジオメトリに使用できますが、明示的に作成する必要があります(通常はpointToLayerオプションを使用)。

これらの非ポイントデータは、Leaflet.markerclusterで処理することはできません。あなたは「サイズ1のクラスター」(私はあなたがマーカーを意味推測)を参照してください場合

したがって、彼らはあなたのstorerにGeoJSONデータでunstyledPoint種類の形状から来ます。

これは、通常のマーカーである:がスタイリングすることができないことをPNGイメージです

Leaflet default marker

。あなたは簡単に色を変更することができ

あなたがcustom iconsを使用し、あなたのPointジオメトリの外観をカスタマイズしたい場合は

、こうしたカスタムアイコンを提供 plugin、または Circle Markersstyleオプションを含め)。

var geoJsonLayer = L.geoJSON(storer, { 
    pointToLayer: function (geoJsonPoint, latlng) { 
    return L.circleMarker(latlng); 
    }, 
    onEachFeature: onEachFeature, 
    style: style 
}); 
+0

をありがとう:あなたはその最後のオプションを選択した場合

はたとえば、あなたのような何かを行うことができます!それはすごい説明だった。 –

+0

ようこそ。人々に感謝するこの方法は、あなたの問題を解決するのに役立つ答えも受け入れることです。十分な_reputation_を取得すると、_upvote_も可能になります。 – ghybs

+0

同様のスタイルの関数を使用したいが、年のプロパティの異なる範囲に対応するさまざまな色を使用して、年のフィーチャプロパティで、使いたいと思った。ただし、My Yearプロパティは整数ではなく文字列です。関数の外でparseIntを使って整数に変更し、それをデータセットに戻すか、あるいはスタイル関数自体にparseIntを渡す方法を考えてみました。どのように私はこれを達成するための任意の提案? –

関連する問題