2017-05-31 1 views
0

私はopenlayersライブラリを初めて使用しています。質問があります。私はたくさんの機能をレンダリングし、マップがズームアウトされると機能が互いにオーバーレイします。これは、最初のスクリーンショットで見られるように、かなり醜いです。私はズームアウトされたマップ(最初のスクリーン)をすべてのズームレベルでズームインマップ(2番目のスクリーン)のように見せたいです。それを実装する最も一般的な方法は何でしょうか?ここズームレベルに基づいて機能を表示する

enter image description here

enter image description here

+0

あなたが見るデータの量を制限する 'ol.source.Cluster'をチェックしてくださいあなたのマップ。この例を参照してくださいhttps://openlayers.org/en/latest/examples/cluster.html – GoinOff

+0

ありがとう、男、それは私が必要としたものです – Umbrella

+0

私は同じ理由でそれを使用します..プラス、スタイル関数を使用することによって、グループの特徴を地図上に表示し、それらを色分けしたり色分けしたりすることができます(グループの特徴を示すために私のドットを少し拡大します)。マウスオーバーは、グループ機能のすべての詳細を提供することもできます。あなたはクールなヨットレーストラッカーを作成しているように見えます... – GoinOff

答えて

0

クラスタマップ層からグループ機能を検出し、グループオブジェクトの個別オブジェクトと円のために四角形を描画形式の関数の例である:

var styleFunction = function() { 
    return function(feature,resolution) { 
    var style; 
    var radius; 
    var offsetY = -26; 
    var gotGroup = false; 

    var features = feature.get('features'); 

    if (features.length == 1) { //length = 1 - individual object instead of combo object 
     style = new ol.style.Style({ 
     image: new ol.style.RegularShape({ 
     radius: 10, 
     points: 4, 
     angle: Math.PI/4, 
     fill: createFillStyle(feature), 
     stroke: createStrokeStyle(feature,resolution,props) 
     }), 
     text: createTextStyle(feature, resolution, props) 
     }); 
    } else { 
     var rad = 11; 
     if (features.length > 1) { //If group of features increase radius of object 
     rad = 12; 
     gotGroup = true; 
     } 
     style = new ol.style.Style({ 
     image: new ol.style.Circle({ 
     radius: rad, 
     fill: createFillStyle(feature), 
     stroke: createStrokeStyle(feature,resolution,props) 
     }), 
     text: createTextStyle(feature, resolution, props) 
    }); 
    } 
    return [style]; 
}; 
}; 

これはあなたのプロジェクトに役立つことを願っています

+0

私はこの地図のものを初めて使いました。とても役に立ちました。ありがとう! – Umbrella

関連する問題