2016-04-05 20 views
1

ポリゴン(Googleマップのポリゴンオプションからなる)の大きなリストを持っています。描画する前に画面の境界内にあるかどうかを確認したいと思います。ポリゴンがマップ境界内にあるかどうかを確認する

ポリゴンが画面境界内にあるかどうかをどのように判断するのですか。このような

何か:

List<PolygonOptions> polygons = getPolygons(); 

    LatLngBounds bounds = map.getProjection().getVisibleRegion().latLngBounds; 

    for (int l = 1; l <= polygons.size(); l++) { 
     if (bounds.Contains(polygons.get(l))) { 
      map.addPolygon(polygons.get(l)); 
     } 
    } 

enter image description here enter image description here

+0

'onCreate'メソッド?その場合、パフォーマンス上の問題はありますか? –

+0

@ニコライ、私ははい、しかし、私は一度私はOSMDroidマップにそれを追加する約2秒間凍っている間凍結した。 Googleマップにはこの問題はありません。描画エンジンが異なる必要があると推測しています。ポリゴンが描画されると、フリーズすることなく問題なく移動できます。しかし、わかりやすくするために、さまざまなズームレベルでいくつかのシェイプを削除して追加する必要があります。非常に多くの形があるので、これを行うと2-3秒間フリーズします。ですから、必要な作業を減らすために、画面のポリゴンとウェイポイントを表示するだけです。見てみるのは大変です。 – Reafidy

+0

私はDouglas-Peuckerアルゴリズムも試しましたが、ほとんど違いはありませんでした。 – Reafidy

答えて

1

私はあなたがポリゴンから各ポイントが表示されているかどうかを確認する必要がないと仮定 - あなたはわずか4ポイントのためにそれを行うべきであることができます簡単に計算する:

enter image description here

たびWHE nユーザは、矩形の枠線が可視範囲内にある地図ポリゴンに配置する必要があるマップを移動します。このようなもの:

The full source code

enter image description here

+0

ありがとう、あなたの伝説。ポリゴンのセクションだけがマップ上にあっても描画されるように修正することはできますか?現在のところ、その一部がマップから外れてポリゴンが削除されているため、そこに空域がないとユーザーが思うことは望ましくありません。 – Reafidy

+0

したがって、上の図に示したポイント1,2,3,4のいずれかが画面上にある場合は、ポリゴンを表示します。 – Reafidy

+1

@Reafidy [このコミット]を見てください(https://gitlab.com/lassana/googlemaps-shapes/commit/946cbb0f11afcb88723c1388953b1523302e31e7) –

関連する問題