2011-02-07 14 views
7

Ive, एक ही प्राप्त करने की कोशिश कर इस वास्तव में मैं क्या चाहते हैं: - Google Maps ImageMapView शो ओवरले विवरण जब क्लिक

मैं आवरण लगा googleMapView लागू कर दिया है, मैं एक मुद्दा है मैं एक पॉपअप दिखाना चाहते हैं जब क्लिक प्रत्येक ओवरले पर, और जब मैं किसी अन्य ओवरले पर क्लिक करता हूं तो पिछली पॉपस गायब होनी चाहिए और नए स्थान पर क्लिक किए गए स्थान (यानी प्रक्षेपण बिंदु) पर दिखाई देना चाहिए। और जब मैं स्क्रीन पर कहीं और क्लिक करता हूं तो पॉपअप प्रकट नहीं होना चाहिए। मैं ऑनटिक रिकॉर्ड करने के लिए ऑनटैप ईवेंट का उपयोग कर रहा हूं। (map_overlay) वह लेआउट है जिसे मैं दिखाना चाहता हूं जब कोई मानचित्र पर प्रक्षेपण बिंदु पर क्लिक करता है। कोड नीचे है और map_overlay.xml कोई भी फ़ाइल हो सकती है।

कक्षा: 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; 
} 

नीचे मुख्य वर्ग के रूप में ऊपर दिखाए गए, जिसमें प्रक्षेपण अंक और im जो ठीक काम कर रहा है प्रदर्शित im कॉल मैं एक कक्षा में onTap घटना को लागू किया है है:

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

उत्तर

12

गीथब पर Android-mapviewballoons देखें। एक itemizedOverlay है कि आप विस्तार कर सकते हैं कि यह सही बात करता है। मैं इसे अपने कई ऐप्स में उपयोग करता हूं।

+0

धन्यवाद मैं इसे आजमाउंगा। – user606669

+0

बहुत बढ़िया! महान काम करता है, उपयोग करने में आसान, अच्छे निर्देश और उदाहरण! अगर मैं कर सकता तो मैं इसे +2 देता। – plainjimbo

संबंधित मुद्दे