7

Posiadam ciągłe LatLngs różnych obszarów w mieście. Czy istnieje sposób, w jaki mogę utworzyć z nim klikalne wielokąty. Po drodze do tego zabrać byłobyTwórz klikalne wielokąty w Mapach Google (dla Androida)

  • Generowanie wielokątów z dostępnych LatLngs. (Chcę naocznie pokazać wielokąty na mapie z kodowaniem koloru)
  • Skonfiguruj setOnMapClickListener.
  • Wykonaj punkt wewnątrz testu wielokąta.

Rozumiem, że jest to bardzo naiwne. Jakie są alternatywne podejścia?

Odpowiedz

6

Oto jak to zrobiłem.

Polygon polygon = getMap().addPolygon(new PolygonOptions() 
        .add(new LatLng(12.780712, 77.770956), new LatLng(12.912006, 77.229738), new LatLng(12.412006, 77.629738), new LatLng(12.912006, 77.229738)) 
        .strokeColor(0xFF00AA00) 
        .fillColor(0x2200FFFF) 
        .strokeWidth(2) 
    ); 


    polygon.setClickable(true); 

    getMap().setOnPolygonClickListener(new GoogleMap.OnPolygonClickListener() { 
     public void onPolygonClick(Polygon polygon) { 

      mClusterManager = new ClusterManager<MyItem>(getApplicationContext(), getMap()); 
      getMap().setOnCameraChangeListener(mClusterManager); 
      getMap().moveCamera(CameraUpdateFactory.newLatLngZoom(getMap().getCameraPosition().target, getMap().getCameraPosition().zoom)); 

      try { 
       readItems(); 
      } catch (JSONException e) { 
       Toast.makeText(getApplicationContext(), "Problem reading list of markers.", Toast.LENGTH_LONG).show(); 
      } 

     } 
    }); 

Nadzieję, że pomaga.

+0

Dzięki! Jak dołączyć niestandardowy obiekt do wielokąta? –

2

Nie musisz szaleć za klikalnym wielokątem. Zrobiłem to czas temu, ale teraz istnieje API dla że:

GoogleMap.setOnPolygonClickListener (OnPolygonClickListener)

Można go używać łatwo:

GoogleMap mymap =....//init your map 
mymap.setOnPolygonClickListener(new OnPolygonClickListener(){ 
void onPolygonClick(Polygon polygon){ 
    //do whatever with polygon! 
} 
}); 
2

W dodając wielokąt Mapa. Najpierw utwórz obiekt PolygonOptions i dodaj do niego kilka punktów. Punkty te utworzą zarys wieloboku. Następnie dodajesz wielokąt do mapy, wywołując GoogleMap.addPolygon (PolygonOptions), który zwróci obiekt wieloboku. Poniższy fragment kodu pokazuje, jak dodać wielokąt do mapy.

// Instantiates a new Polygon object and adds points to define a rectangle PolygonOptions rectOptions = new PolygonOptions() 
       .add(new LatLng(37.35, -122.0), 
        new LatLng(37.45, -122.0), 
        new LatLng(37.45, -122.2), 
        new LatLng(37.35, -122.2), 
        new LatLng(37.35, -122.0)); 

// Get back the mutable Polygon Polygon polygon = myMap.addPolygon(rectOptions); 

Domyślnie wielokątów nie można klikać. Możesz włączyć i wyłączyć klikalność, dzwoniąc pod numer Polygon.setClickable(boolean).

Podobnie jak N Dorigatti powiedział. Używając OnPolygonClickListener do śledzenia zdarzeń kliknięcia, należy zadzwonić pod numer GoogleMap.setOnPolygonClickListener(OnPolygonClickListener).

Gdy użytkownik kliknie wielokąt, otrzymasz wywołanie zwrotne onPolygonClick (wielokąt). Sprawdź to document, aby uzyskać więcej informacji.