リーフレット マップに表示したいオブジェクト (マップ上のポイント) のグローバル データベースがあります。一度にすべてのデータベース (単に大きすぎる) をロードして Leaflet LayerGroup にオブジェクトを作成する代わりに、おそらく各マップ タイルがロードされるときに、データのクエリを実行するためのより効率的な方法がありますか、またはカスタム ソリューションの作成を検討していますか?このため?
質問する
7187 次
2 に答える
3
スンカシが言ったことを行うには、標準的で効率的な方法があります。タイル化された geoJSON サービスを作成し、leaflet-tilelayer-geojsonプラグインを使用します。
次に、ブラウザ側で必要なすべてのコードは (Github ページから):
var geojsonURL = 'http://polymaps.appspot.com/state/{z}/{x}/{y}.json';
var geojsonTileLayer = new L.TileLayer.GeoJSON(geojsonURL, {
clipTiles: true,
unique: function (feature) {
return feature.id;
}
}, {
style: style,
onEachFeature: function (feature, layer) {
if (feature.properties) {
var popupString = '<div class="popup">';
for (var k in feature.properties) {
var v = feature.properties[k];
popupString += k + ': ' + v + '<br />';
}
popupString += '</div>';
layer.bindPopup(popupString);
}
if (!(layer instanceof L.Point)) {
layer.on('mouseover', function () {
layer.setStyle(hoverStyle);
});
layer.on('mouseout', function () {
layer.setStyle(style);
});
}
}
}
);
map.addLayer(geojsonTileLayer);
于 2014-06-21T01:38:50.257 に答える