Как добавить кликабельные иконки на карту Google с Android? - PullRequest
0 голосов
/ 01 марта 2012

У меня есть проблема, я добавил несколько иконок из Drawable на Google-Map в Android, и я хочу дать ссылку на каждую, которую я хочу, чтобы они могли быть кликабельными);

Есть ли кто-нибудь, чтобы помочь мне, плз?

есть мои коды:


public class Main extends MapActivity{
    MapView mapView;    
MapController mc;`enter code here`
GeoPoint p;
String[][] cordinates=new String[4][2];
int[] iconsID=new int[4];   

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    getCordinate();
    mapView = (MapView) findViewById(R.id.mapview);
    mapView.setBuiltInZoomControls(true);
   // mapView.setStreetView(true);
    mapView.setSatellite(true);                

    mc = mapView.getController();

    String coordinates[] = {"40.783244", "30.400898"};

    double lat = Double.parseDouble(coordinates[0]);
    double lng = Double.parseDouble(coordinates[1]);

    p = new GeoPoint(
        (int) (lat * 1E6), 
        (int) (lng * 1E6));

    mc.animateTo(p);
    mc.setZoom(17); 

  //---Add a location marker---
    MapOverlay mapOverlay = new MapOverlay();
    List<Overlay> listOfOverlays = mapView.getOverlays();
    listOfOverlays.clear();
    listOfOverlays.add(mapOverlay); 
    mapView.invalidate();  
}

 private void getCordinate() {
    // I get icon Id from drawable and I give 4 cordinates to add my icons
    for(int i=0;i<4;i++){
        kordinat[i][0]="40.78"+i+"244";
        kordinat[i][1]="30.40"+i+"898";
    }

    iconsID[0]=R.drawable.hizmet;
    iconsID[1]=R.drawable.kafe;
    iconsID[2]=R.drawable.hastane;
    iconsID[3]=R.drawable.petrolofisi;      

}

@Override
protected boolean isRouteDisplayed() {
    // TODO Auto-generated method stub
    return false;
}

class MapOverlay extends com.google.android.maps.Overlay // Thid class add icon on map
    {
        @Override
        public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) 
        {
            double lat;
            double lng;
            super.draw(canvas, mapView, shadow);                   

            //---translate the GeoPoint to screen pixels--- I added 4 icons on the map 
            Point screenPts = new Point();

            for(int i=0;i<4;i++){

                 lat = Double.parseDouble(cordinates[i][0]);
                 lng = Double.parseDouble(cordinates[i][1]);

                p = new GeoPoint(
                    (int) (lat * 1E6), 
                    (int) (lng * 1E6));


              mapView.getProjection().toPixels(p, screenPts);

              //---add the marker---
              Bitmap bmp = BitmapFactory.decodeResource(getResources(), iconsID[i]);            
              canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null);  
            }
            return true;
        }
    } 

Ответы [ 2 ]

1 голос
/ 17 октября 2012

Вы можете использовать класс BalloonItemized OverLay.

Перейдите по этой ссылке, чтобы получить ответ.

Кто-нибудь успешно реализовал BalloonItemizedOverlay (с несколькими точками)?

0 голосов
/ 01 марта 2012

Вы должны реализовать метод onTap (), чтобы сделать рисоваемый объект кликабельным. Здесь я предоставляю ссылку для примера. В этом примере он показывает AlertDialog по щелчку наложения (в вашем случае Drawable).

http://developer.android.com/resources/tutorials/views/hello-mapview.html

Надеюсь, это поможет !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...