9

リーフレット マップに表示したいオブジェクト (マップ上のポイント) のグローバル データベースがあります。一度にすべてのデータベース (単に大きすぎる) をロードして Leaflet LayerGroup にオブジェクトを作成する代わりに、おそらく各マップ タイルがロードされるときに、データのクエリを実行するためのより効率的な方法がありますか、またはカスタム ソリューションの作成を検討していますか?このため?

4

2 に答える 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 に答える