私のプロジェクトでは、約 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
}