3

SupportMapFragmentたくさんのオーバーレイを含む があります( PolygonsPolylinesMarkers.

私がしたいこと

種類はユーザーのPolygons相互利用可能な領域を表しているため、クリックするたびにそれらを強調表示 (塗りつぶしの色を変更) したいと思います。選択されたシェルは 1 つしかPolygon表示されないため、さらに選択されたPolygonシェルはデフォルトの色になります。

これが私がすることです:

  private synchronized void selectPolygon(Polygon polygon) {
    if (polygon != null && selectedPolygon != polygon) {
       selectedPolygon.setFillColor(COLOR_DEFAULT);
    }
    if (polygon != null)
       polygon.setFillColor(COLOR_SELECTED);
    selectedPolygon = polygon;
    mapFragment.getView().invalidate(); // added this because I was hoping this does the trick
  }

実際に何が起こるか

塗りつぶしの色の変更または切り替えは、連続して約 2 ~ 3 回機能します。その後、ポリゴンの色は変わりません。塗りつぶしの色自体は正しく設定されていますが、マップは更新されません。ズームアウトすると (再描画などを強制するようです)、正しいポリゴンの色が表示されます。

invalidate()には何らかのものが必要だと思いSupportMapFragmentますが、ドキュメントでそのようなものを見つけることができませんでした。アイデアはありますか?

4

1 に答える 1

1

これを一貫して行う適切な方法は、色を変更してマップ上のポリゴンを削除して再度追加することです

于 2013-10-28T15:37:59.447 に答える