2013-02-14 3 views
0

Мне нужно показать пользовательскую информацию на карте, которую можно использовать как пользовательскую ленту на Pin. Я сужусь Balloon карты накладки и информация, мне нужно, чтобы показать, прихожу из веба-службы , например фиктивной информации следующего - время - Имя - статус батареи - и несколько другой информации Заранее спасибоAndroid: карта Overlay Custom Information show on Ballon Overlay

+0

https://github.com/jgilfelt/android-mapviewballoons http://stackoverflow.com/questions/4923422/mapview-show-overlay-details-when-clicked –

+0

уже использовали это –

ответ

0

Это работает для меня, пожалуйста, не забудьте изменить имя пакета, и если у вас есть какие-либо ошибки, пожалуйста, спросите

package com.utility; 

    import java.util.ArrayList; 

    import android.content.Context; 
    import android.graphics.Canvas; 
    import android.graphics.drawable.Drawable; 

    import com.google.android.maps.MapView; 
    import com.google.android.maps.OverlayItem; 

    public class MyItemizedOverlay extends BalloonItemizedOverlay<OverlayItem> { 

     private ArrayList<OverlayItem> m_overlays = new ArrayList<OverlayItem>(); 
     private Context c; 
     private Drawable marker; 
     private String mFlag; 

     public MyItemizedOverlay(Drawable marker, MapView mapView, String mFlag) { 
      super(boundCenter(marker), mapView); 
      this.marker = marker; 
      c = mapView.getContext(); 
      this.mFlag = mFlag; 
     } 

     public void addOverlay(OverlayItem overlay) { 
      m_overlays.add(overlay); 
      populate(); 
     } 

     @Override 
     protected OverlayItem createItem(int i) { 
      return m_overlays.get(i); 
     } 

     @Override 
     public void draw(Canvas canvas, MapView mapView, boolean shadow) { 
      super.draw(canvas, mapView, shadow); 

      boundCenterBottom(marker); 
     } 

     public void removeOverlay(OverlayItem overlay) { 
      m_overlays.remove(overlay); 
      populate(); 
     } 

     public void clear() { 
      m_overlays.clear(); 
      populate(); 
     } 

     @Override 
     public int size() { 
      return m_overlays.size(); 
     } 

     @Override 
     protected boolean onBalloonTap(int i) { 

      return true; 
     } 

    } 


MyItemizedOverlay mItemizedOverlay = new MyItemizedOverlay(marker1, mMapView, "AnyName"); //here marker1 is your pin in drawable like - getResources().getDrawable(R.drawable.pin_red); 

//here mMapView is your mapview object that you have defined in your xml 

List<Overlay> mapOverlays = mMapView.getOverlays(); 

//now when you get response from server put this code 

GeoPoint newPoint = new GeoPoint(
           (int) (Double.parseDouble(mLat) * 1E6), 
           (int) (Double.parseDouble(mLong) * 1E6)); 
         Geocoder geoCoder = new Geocoder(getBaseContext(), 
           Locale.getDefault()); 
         String _destinationAdd = ConvertPointToLocation(newPoint); 

         if (!mUserInfo.mLat.equals("null") 
           || mUserInfo.mLat != null 
           && !mUserInfo.mLong.equals("null") 
           || mUserInfo.mLong != null) { 

          OverlayItem overlayItem = new OverlayItem(
            newPoint, 

              "Location : " + _destinationAdd, 
            null); 
          itemizedOverlay.clear(); 

          itemizedOverlay.addOverlay(overlayItem); 
          mapOverlays.add(itemizedOverlay); 

          mMapView.getController() 
            .animateTo(
              getPoint(
                Double.parseDouble(mUserInfo.mLat), 
                Double.parseDouble(mUserInfo.mLong))); 
          mMapView.getController() 
            .setCenter(
              getPoint(
                Double.parseDouble(mUserInfo.mLat), 
                Double.parseDouble(mUserInfo.mLong))); 
          mMapView.getController().setZoom(15); 
         } 
         mMapView.invalidate();