2016-09-15 14 views
-1

私のプロジェクトでは、約600+ kmz/kmlファイルを含むディレクトリから複数のkmzファイルをロードします。ユーザーがマップを移動し、関連するkmzファイルをロードするためのボタンをクリックすると、最大5つのファイルがロードされます。ズームが十分に大きく、覆われたエリアが広すぎないようにするためのチェックが行われます。geoxml3を使用してKMZファイルまたはKMLファイルの境界を取得する方法は?

関連するkmz/kmlファイルを読み込むには、kmz/kmlからの目印がビューポート内に部分的にあってもファイルが読み込まれるという考えがあります。これらのkmz/kmlファイルをすばやく読み込むには、次の手順を考えました:

ステップ1:kmz/kmlファイルの境界を別々に抽出し、ファイルに保存します。私は、ビューポートの境界を得る方法、map.getBounds()、特定のポリゴンをkmzに入れること、geoXmlDoc.placemarks[i].polygon.boundsを知っています。しかし、すべてのポイント、ライン、ポリゴンを含むkmzファイル全体の境界を取得する方法はありますか?

すべてのkmz/kmlファイルの境界を含む境界ファイルを生成するには、この手順を1回だけ行う必要があることを理解します。私はループを介して別々に各ファイルを読み込み、ビューポートのgetBoundsを呼び出そうとしましたが、残念ながらビューポートはkmzの境界に正確には適合しません。通常はビューポートが大きくなります。

ステップ2:ステップ2:ユーザーが新しい場所にマップを移動し、関連するkmzファイルをクリックすると、ビューポート境界がkmz境界のいずれかと交差するかどうかがチェックされます。

if (currentBounds.intersects(all_bounds_array[i])) 
{ 
    // load the kmz file for index i 
} 

答えて

1

空のLatLngBoundsオブジェクトを作成します。マップの現在の境界を無視します。あなたのファイルのさまざまな座標を持つ境界

bounds.extend(/* your coords */); 
+1

おかげ@duncanは、あなたのソリューションがうまく機能することを拡張KMZファイルのすべての内容によって

var bounds = new google.maps.LatLngBounds(); 

ループ、。また、geoxml3には、解析された各kmzドキュメントの境界プロパティがあることもわかりました。だから、私が望んでいるものは、実際にすぐに利用可能です。 ** [This](http://www.geocodezip.com/geoxml3_test/v3_geoxml3_kmltest_linktoB.html?type=m&filename=us_states_noPoint.xml)** exampleのソースには、ジョブを実行する行があります。map.fitBounds(geoXmlDoc.bounds); –

+0

もちろん、私がしたのは 'geoXmlDoc.bounds'ビットだけでした。 –

関連する問題