1

OpenLayersを使用してOpenStreetMapマップを表示しています。(ただし、これはどのマップ製品でも機能するのに十分一般的であると思います...)

私はいくつかの非常に洗練されたベクターオーバーレイを表示していますが、GeoJSONを介してサーバーからオーバーレイに返す機能の量と解像度は、多くのコンピューターにとって多すぎることが証明されています。

代わりに、現在のズームの解像度に適したデータのみを送信したいと思います。これは、オブジェクトのgetResolutionandcalculateBoundsメソッドを使用して比較的簡単に実行できるはずです。マップ投影と表示投影の間で変換できるBoundsオブジェクトを返します。MapcalculateBounds

解像度を希望の投影(この場合は4326)に変換するにはどうすればよいですか?これを行うための組み込みの方法はありますか、それとも既知の数式に対して解決を実行する必要がありますか?

4

2 に答える 2

2

Proj4jsを使用して、クライアントで座標系を変換できます。

于 2010-03-29T00:26:13.590 に答える
1

GeoJSON ベクター レイヤーが描画する縮尺を制限するだけではどうですか?

http://dev.openlayers.org/docs/files/OpenLayers/Layer-js.html#OpenLayers.Layer.maxScale

次に、サーバーへの OpenLayers AJAX リクエストは、このスケールを超えてのみトリガーする必要があります。ベクターレイヤーを表示したい場合に対応する OpenSteetMaps スケール/ズームレベルを選択し、それに応じて maxScale を設定します。

リクエストは、現在のマップ表示の境界をサーバーに自動的に送信して、関連する機能を取得する必要があります。

私はあなたのジレンマを誤解しているかもしれません。解像度の式が必要な場合は、この記事で説明しています。

http://msdn.microsoft.com/en-us/library/aa940990.aspx

アップデート

OpenLayers でクラスタリング戦略を実装できます。これにより、レンダリング時間が短縮されるはずですが、データベースから同じ量のデータが返されると思います。

http://dev.openlayers.org/releases/OpenLayers-2.7/doc/apidocs/files/OpenLayers/Strategy/Cluster-js.html

ここで例を確認してください:

http://openlayers.org/dev/examples/strategy-cluster.html

ポイントのサイズが異なるのを避けるには、pointRadius: "${radius}" を定数に設定する必要があります。

最後に、GeoJSON ではなく WMS サービスを使用する代替手段があります。この場合、サーバーは固定サイズの画像のみを返します。

于 2010-03-09T08:47:46.397 に答える