2016-07-10 15 views
0

私はOpenLayersマップ(Google Mapsベースレイヤーを使用)をズームして、与えられたすべての座標リストをビューに収める必要があります。OpenLayers 3:配列の座標へのズームマップ

pointsDecimal: Array[50] 
    0: 148.77638 
    1: -34.491728 
    2: 148.77896 
    3: -34.492302 
    4: 148.778090711323 
    ... 

偶数インデックス(0、2、4等)、経度であり、奇数:

私はこのようになりpointsDecimal命名経度と緯度のペアの配列の座標を保存しました(1,3,5など)は緯度です。

これは私が使用しようとしているコードです:

map.getView().fit(pointsDecimal, map.getSize()); 

は、しかし、いくつかの理由のために、この座標で最大ズームレベルで私を置き、[0,0] - ギニア湾では、ありませんで私がしたいと思っている南東ウェールズ南東部!

pointsDecimalアレイの代わりにOpenLayersソース(例:source.getExtent())を使用していた場合、これははるかに簡単ですが、これはオプションではありません。配列のみを使用できます。

誰でも私に何かヒントを教えてもらえますか?

編集:私はほぼそこにいると思います、Anupamのおかげです。これは私が今持っているものです。

var extent = [pointsLongMin,pointsLatMin,pointsLongMax,pointsLatMax]; 
map.getView().fit(extent,map.getSize()); 

次のように私は配列に渡している値は次のとおりです。

pointsLongMin: 148.771162 
pointsLatMin: -34.5029736405108 
pointsLongMax: 148.77896 
pointsLatMax: -34.491728 

しかし、私はまだ[0,0で海に出てダンプ取得していますが]。私はここで間違って何をしていますか?

答えて

2

map.getView()。fit(extent、size)を使用するためです。 エクステントは[minx、miny、maxx、maxy]の4つのポイントを表します。

実際は長方形です。

var extent=[148.77638,-34.491728,148.77896,-34.492302]; 

map.getView().fit(extent,map.getSize()); 
+0

私はこれが私を近づけていると確信していますが、それでも私は海の同じ場所に私を投棄しています。上記のコードを正確にコピーしました...これがうまくいかない理由が考えられますか?ご協力いただきありがとうございます。 –

+0

理由は実際にあなたが共有した配列からそれらを選んだだけです。正しい範囲を渡すだけです。 –

+0

まだ動作しない - 上記の私の編集を参照してください。私が間違っていることは解決できません。何か案は?あなたのお手伝いをありがとう... –

1

最もpropable理由は、あなたのマップがあなたの範囲EPSG:4326ながらEPSG:3857に投影されていることですしてみてください。だから、あなたの地図投影にあなたの範囲を変換する必要があります。

var coordMin = ol.proj.fromLonLat([148.77638,-34.491728], 'EPSG:3857'); 
var coordMax = ol.proj.fromLonLat([148.77896,-34.492302], 'EPSG:3857'); 
var extent=[coordMin[0],coordMin[1],coordMax[0],coordMax[1]]; 
map.getView().fit(extent,map.getSize()); 

エクステントトランスフォームを行うためのより優れた方法があります。あなたが完全なコードを提供しない限り、私たちはあなたの地図投影が何であるか推測することしかできません。私はEPSGであると推測しています:3857が原因で、デフォルトのol3が使用されています。

+0

Brilliant!完璧に動作します。私はそれを考えていないとは信じられません。私はコードの他の部分の投影の違いを訂正していましたが、なぜこの部分でどうしたらいいのかわかりません。私のために働いたコードは、あなたのコード内の座標を変数名で置き換えた点を除いて、上記と同じでした。 'var coordMin = ol.proj。fromLonLat([pointsLongMin、pointsLatMin]、 'EPSG:3857');「ありがとうございます。 –

+0

promig amigoはありません。助けてうれしい!!! – pavlos

関連する問題