Как добавить другой элемент наложения в Android mapview

#android #android-mapview #itemizedoverlay

#Android #android-mapview #itemizedoverlay

Вопрос:

Мне нужно добавить другой элемент наложения в mapview. Я использовал стандартное руководство разработчиков Android по картам Google. В настоящее время у меня есть mapview на вкладке. Я был бы действительно признателен за любые идеи. Спасибо.

Ниже приведены мои классы Java:

 public class Mapview extends MapActivity {

    protected boolean isRouteDisplayed(){
        return false;
    }

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

        MapView mapView = (MapView) findViewById(R.id.mapview);
        mapView.setBuiltInZoomControls(true);

        // JD sports marker begin
        List<Overlay> mapOverlays = mapView.getOverlays();
        Drawable drawable = this.getResources()
                .getDrawable(R.drawable.jd_sports_logo);
        //Passes drawable(jd sports logo) into HelloItemizedOverlay class
        HelloItemizedOverlay itemizedoverlay = 
                new HelloItemizedOverlay(drawable);

        double latitude = 51.545538;
        double longitude = -0.477247;
        GeoPoint point = new GeoPoint((int)(latitude * 1e6), 
                (int)(longitude * 1e6));

        OverlayItem overlayitem = new OverlayItem(point, "JD Sports", 
                "This is a sports shop");

        itemizedoverlay.addOverlay(overlayitem);
        mapOverlays.add(itemizedoverlay);
        // JD sports marker ends

        // Fitness first marker begin
        List<Overlay> mapOverlays1 = mapView.getOverlays();
        Drawable drawable1 = this.getResources()
                .getDrawable(R.drawable.fitness_first_logo);
        HelloItemizedOverlay itemizedoverlay1 = 
                new HelloItemizedOverlay(drawable);

        double latitude1 = 51.545157;
        double longitude1 = -0.477247;
        GeoPoint point1 = new GeoPoint((int)(latitude * 1e6), 
                (int)(longitude * 1e6));

        OverlayItem overlayitem1 = new OverlayItem(point, "JD Sports",
                "This is a sports shop");

        itemizedoverlay.addOverlay(overlayitem);
        mapOverlays.add(itemizedoverlay);
        // Fitness first marker ends
    }

}
  

Мой класс HelloItemizedOverlay:

 public class HelloItemizedOverlay extends ItemizedOverlay {

    private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
    private ArrayList<OverlayItem> mOverlays1 = new ArrayList<OverlayItem>();

    public HelloItemizedOverlay(Drawable defaultMarker) {
        super(boundCenterBottom(defaultMarker));

    }

    public void addOverlay(OverlayItem overlay) {

        mOverlays.add(overlay);
        populate();
    }

    public HelloItemizedOverlay(Drawable defaultMarker, Context context) {
        super(defaultMarker);
        Context mContext = context;
    }

    @Override
    protected OverlayItem createItem(int i) {
        // TODO Auto-generated method stub
        return mOverlays.get(i);
    }

    @Override
    public int size() {
        // TODO Auto-generated method stub
        return mOverlays.size();
    }

    @Override
    protected boolean onTap(int index) {
        OverlayItem item = mOverlays.get(index);
        Context mContext = null;
        AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
        dialog.setTitle(item.getTitle());
        dialog.setMessage(item.getSnippet());
        dialog.show();
        return true;
    }

}
  

Комментарии:

1. в чем проблема при добавлении другого слоя, как вы сделали с первым itemizedoverlay.addOverlay(overlayitem), и было бы лучше, если бы вы могли форматировать все, что является кодом, как код…

Ответ №1:

 OverlayItem overlayitem1 = new OverlayItem(point, "JD Sports, ...
  

Следует прочитать

 OverlayItem overlayitem1 = new OverlayItem(point1, "JD Sports", ...
  

Разве это не так?

Ответ №2:

Попробуйте это:

 ...
Drawable drawable1 = this.getResources()
            .getDrawable(R.drawable.fitness_first_logo);
boundCenterBottom(drawable1);
...