7

Ho latLng continue di varie aree in una città. C'è un modo in cui posso creare poligoni cliccabili con esso. Una volta che senso andare circa sarebbe quello diCrea poligoni cliccabili su Google Maps (per Android)

  • Generare poligoni con i LatLngs disponibili. (Voglio mostrare visivamente i poligoni sulla mappa della città con la codifica a colori)
  • impostare setOnMapClickListener.
  • Esegui un punto all'interno del test del poligono.

Capisco che questo è molto ingenuo. Quali sono gli approcci alternativi?

risposta

6

Ecco come l'ho fatto.

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(); 
      } 

     } 
    }); 

Spero che questo aiuti.

+0

Grazie! Come allegare oggetto personalizzato a Polygon? –

2

non è necessario impazzire per avere poligono cliccabile. L'ho fatto tempo fa, ma ora, c'è un'API per questo:

GoogleMap.setOnPolygonClickListener (OnPolygonClickListener)

Si può usare facilmente:

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

In aggiunta al poligono la mappa. Prima crea un oggetto PolygonOptions e aggiungi alcuni punti ad esso. Questi punti formeranno il contorno del poligono. Quindi aggiungi il poligono alla mappa chiamando GoogleMap.addPolygon (PolygonOptions) che restituirà un oggetto Polygon. Questo snippet di codice seguente mostra come aggiungere poligono a una mappa.

// 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); 

Per impostazione predefinita, i poligoni non sono selezionabili. È possibile abilitare e disabilitare la possibilità di fare clic chiamando Polygon.setClickable(boolean).

Mi piace N Dorigatti ha detto. Quando usi OnPolygonClickListener per ascoltare eventi di clic, chiama GoogleMap.setOnPolygonClickListener(OnPolygonClickListener).

Quando un utente fa clic su un poligono, si riceverà un callback onPolygonClick (Polygon). Controllare questo document per ulteriori informazioni.