mapView показывает детали наложения при нажатии - PullRequest
7 голосов
/ 07 февраля 2011

Я пытался достичь того же, это именно то, что я хочу: - Google Maps Image

Я реализовал googleMapView с наложениями, у меня есть одна проблема: я хочу показывать всплывающее окно при нажатии на каждом наложении, а когда я нажимаю на другое наложение, предыдущее всплывающее окно должно исчезать, а новое должно появляться в выбранном месте (т. Е. Проекция точки). И всплывающее окно не должно появляться, когда я щелкаю где-либо еще на экране. Я использую событие onTap для записи onclick. (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;
}

Ниже приведен класс Main, в котором я отображаю точки проекции, который работает нормально, и я звоню. Я реализовал событие 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();
    }
}

1 Ответ

12 голосов
/ 07 февраля 2011

Оформить Android-mapviewballoons на github. Имеет ItemizedOverlay, который вы можете расширить, что делает именно эту вещь. Я использую его в нескольких своих приложениях.

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