2011-02-07 10 views
7

he estado tratando de acheive la misma, esto es exactamente lo que quiero: - Google Maps ImageMAPview detalles Mostrar superposición cuando se hace clic

he implementado googleMapView con superposiciones, tengo un problema quiero mostrar una ventana emergente cuando se hace clic en cada superposición, y cuando hago clic en otra superposición, el popus anterior debe desaparecer y debe aparecer uno nuevo en la ubicación cliqueada (es decir, puntos de proyección). Y la ventana emergente no debería aparecer cuando hago clic en cualquier otro lugar en la pantalla. Estoy usando el evento onTap para grabar onclick. (map_overlay) es el diseño que quiero mostrar cuando alguien hace clic en un punto de proyección en el mapa. El código está debajo y map_overlay.xml podría ser cualquier archivo.

Clase: ItemizedOverlay

public boolean onTap(GeoPoint p, MapView mapView) { 

LayoutInflater inflater = (LayoutInflater)cContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

LayoutParams lp = new MapView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT, p, LayoutParams.WRAP_CONTENT); 
LinearLayout view = (LinearLayout)inflater.inflate(R.layout.map_overlay, null); 

mapView.removeView(view);  
mapView.invalidate();  
mapView.addView(view,lp); 

mapView.invalidate(); 

return true; 
} 

continuación es la clase principal en el que im que presentan puntos de proyección que está trabajando muy bien y estoy llamando He implementado el evento Ontap en otra clase de la imágen:

public **class MapView** extends MapActivity{ 
    private ArrayList<MyClass> overlayItem ; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.large_mapview); 
     mapView = (MapView) findViewById(R.id.mapview); 
     // mapView.setBuiltInZoomControls(true); 

     List<Overlay> mapOverlays = mapView.getOverlays(); 
     Drawable drawable = this.getResources().getDrawable(R.drawable.mappointer2); 
     ItemizedOverlay itemizedoverlay = new ItemizedOverlay(drawable,this); 
     OverlayItem overlayitem; 
     GeoPoint point; 
     double lat; 
     double lng;   

     for (int i = 0; i < overlayItem.size(); i++) { 

      lat = Double.parseDouble(overlayItem.get(i).getLatitude()); 
      lng = Double.parseDouble(overlayItem.get(i).getLongitude()); 
      point = new GeoPoint((int) (lat * 1E6),(int) (lng * 1E6)); 

      overlayitem = new OverlayItem(point, i+"".toString(), overlayItem.get(i).getDetails().toString()); 
      itemizedoverlay.addOverlay(overlayitem); 
      mapOverlays.add(itemizedoverlay); 

     } 

     mapView.invalidate(); 
    } 
} 

Respuesta

12

Echa un vistazo Android-mapviewballoons en github. Tiene una ItemizedOverlay que puede ampliar que hace esto exactamente. Lo uso en varias de mis aplicaciones.

+0

Gracias Lo intentaré. – user606669

+0

¡Impresionante! funciona genial, fácil de usar, buenas instrucciones y ejemplos! Le daría +2 si pudiera. – plainjimbo

Cuestiones relacionadas