あなたが現在お使いのmapbox口座から直接の両方のjQuery $.getJSON
を通して、あなたのデータをロードします。
私の理解が正しい場合は、leaflet-omnivoreプラグインを使用してこれらのメソッドを置き換えますか?
var geojsonLayer = omnivore.geojson("filePath", null, L.mapbox.featureLayer());
geojsonLayer.addTo(map);
をあなたが(あなたのケースでLeaflet.markerclusterプラグインを使用して)あなたのマーカーをクラスタ化する際に今ではもう少し複雑になる:あなたが直接使用できるよう
直接交換は、非常に単純です。しかし、両方とも非同期AJAX要求を実行し、コールバックで変換する必要があるため、$.getJSON
と似ています。リーフレット、雑食動物で
、あなたは.on("ready", callback)
の構文を使用します。
var geojsonLayer = omnivore.geojson("filePath", null, L.mapbox.featureLayer())
.on("ready", function() {
var markers = L.markerClusterGroup();
markers.addLayer(geojsonLayer);
markers.addTo(mymap);
});
更新JSFiddle:https://jsfiddle.net/1uuubmwb/39/
EDIT
OKを私はあなたが「したいあなたの部分を逃しましたあなたが指しているマップボックスからチュートリアルのように "データを検索"します。
マーカをクラスタ化したいのでもっと複雑なので、マップボックスフィーチャレイヤを直接持たず、マーカクラスタグループを持つことができます。
回避策は、あなたのgeojsonLayer
mapboxフィーチャレイヤ上のフィルタ条件を変更するには、そのクラスタグループの毎回の内容を置き換えるために、次のようになります。
// this will "hide" markers that do not match the filter.
geojsonLayer.setFilter(showCode);
// replace the content of marker cluster group.
markers.clearLayers();
markers.addLayer(geojsonLayer);
その後、あなたのポップアップのために、あなたはそれを作成し、それを手動でバインドする必要があり、mapbox機能層は、(もしそうなら、それは自動的にポップアップ/「ツールチップ」コンテンツを埋めるためにその情報を使用しています)title
属性を使用するようににGeoJSONデータを必要とするよう:
function attachPopups() {
// Create popups.
geojsonLayer.eachLayer(function (layer) {
var props = layer.feature.properties;
layer.bindPopup(
"<b>Code unité :</b> " + props.CODE_UNITE + "<br />" +
"<b>Adresse web :</b> <a href='" + props.ADRESSE_WEB + "' target='_blank'>" + props.ADRESSE_WEB + "</a>"
);
});
}
残念ながら、それがのように見えますはそのポップアップを削除するので、setFilter
の後にこのattachPopups()
関数を呼び出す必要があります。
デモ:https://jsfiddle.net/1uuubmwb/40/
JSFiddleでコードを共有していただき、ありがとうございます。サポートの提供に役立ちます。 SOを使って、最初のステップは、問題を特定してコードを減らし、質問本体で共有することです。 "[最小限の、完全で検証可能な例](https://stackoverflow.com/help/mcve )」。 [asking help]に関する詳細(https://stackoverflow.com/help/asking)。 JSFiddleは追加のボーナスです。 – ghybs