0

私のプロジェクトでは、約 600 以上の kmz/kml ファイルを含むディレクトリから複数の kmz ファイルをロードしています。ユーザーがマップを移動し、ボタンをクリックして関連する kmz ファイルをロードすると、最大 5 つのファイルがロードされます。カバーされる領域が広すぎないように、ズームが十分に大きいことを確認するためのチェックがあります。

関連する kmz/kml ファイルをロードするには、kmz/kml からの目印がビューポート内に部分的にでも収まる場合、ファイルがロードされるという考え方です。これらの kmz/kml ファイルをすばやく読み込むために、次の手順を考えました。

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

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

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

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

1 に答える 1

1

空のLatLngBoundsオブジェクトを作成します。マップの現在の境界を無視します。

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

KMZ ファイルのすべてのコンテンツをループし、ファイル内のさまざまな座標で境界を拡張します

bounds.extend(/* your coords */);
于 2016-09-15T14:42:50.090 に答える