OSMdroid bounds marker

大憨熊 提交于 2020-01-02 04:40:10

问题


////OSMdroid centered on the markers////

I add markers, I need to map the maximum increases or decreases in such a way that all markers were visible

my code:

public class mapcode extends Activity {
    globalvar appState;
    int stats=0;
    private MapView mapView;
    private IMapController mapController;
    private SimpleLocationOverlay mMyLocationOverlay;
    private ScaleBarOverlay mScaleBarOverlay;  
    ItemizedIconOverlay<OverlayItem> currentLocationOverlay;
    DefaultResourceProxyImpl resourceProxy;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
        setContentView(R.layout.map);

        appState = ((globalvar) getApplicationContext());





        mapView = (MapView) this.findViewById(R.id.mapview);  
        mapView.setTileSource(TileSourceFactory.MAPNIK);
      //  mapView.setBuiltInZoomControls(true); //кнопка ZOOM +-
        mapView.setMultiTouchControls(true);

        mapController = this.mapView.getController();
        mapController.setZoom(2);

        this.mMyLocationOverlay = new SimpleLocationOverlay(this);                          
        this.mapView.getOverlays().add(mMyLocationOverlay);

        this.mScaleBarOverlay = new ScaleBarOverlay(this);                          
        this.mapView.getOverlays().add(mScaleBarOverlay);
//      this.mapView

        /////////////////
        resourceProxy = new DefaultResourceProxyImpl(getApplicationContext());
        GeoPoint  currentLocation = new GeoPoint(55.860863,37.115046); 
        GeoPoint  currentLocation2 = new GeoPoint(63.557413,-156.102119); 


        OverlayItem myLocationOverlayItem = new OverlayItem("Here", "Current Position", currentLocation);
        Drawable myCurrentLocationMarker = this.getResources().getDrawable(R.drawable.a);
        myLocationOverlayItem.setMarker(myCurrentLocationMarker);
       // myLocationOverlayItem.setMarkerHotspot(HotspotPlace.CENTER); //no working/

        final ArrayList<OverlayItem> items = new ArrayList<OverlayItem>();
        items.add(myLocationOverlayItem);



      myLocationOverlayItem = new OverlayItem("Here", "Current Position", currentLocation2);
      myCurrentLocationMarker = this.getResources().getDrawable(R.drawable.a);
      myLocationOverlayItem.setMarker(myCurrentLocationMarker);

  //    myLocationOverlayItem.setMarkerHotspot(HotspotPlace.CENTER); // no working


        items.add(myLocationOverlayItem);



        currentLocationOverlay = new ItemizedIconOverlay<OverlayItem>(items,
                new ItemizedIconOverlay.OnItemGestureListener<OverlayItem>() {
                    public boolean onItemSingleTapUp(final int index, final OverlayItem item) {
                        return true;
                    }
                    public boolean onItemLongPress(final int index, final OverlayItem item) {
                        return true;
                    }
                }, resourceProxy);


        this.mapView.getOverlays().add(this.currentLocationOverlay);
}

I added two markers, but only one is visible:

http://uploads.ru/LvBlZ.png

and I need to osmdroid is centered and immediately showed both marker

http://uploads.ru/DPLl5.png


回答1:


I think you want something like this:

int minLat = Integer.MAX_VALUE;
int maxLat = Integer.MIN_VALUE;
int minLong = Integer.MAX_VALUE;
int maxLong = Integer.MIN_VALUE;
ArrayList<OverlayItem> items = new ArrayList<OverlayItem>();
for (OverlayItem item : items) {
    GeoPoint point = item.getPoint();
    if (point.getLatitudeE6() < minLat)
        minLat = point.getLatitudeE6();
    if (point.getLatitudeE6() > maxLat)
        maxLat = point.getLatitudeE6();
    if (point.getLongitudeE6() < minLong)
        minLong = point.getLongitudeE6();
    if (point.getLongitudeE6() > maxLong)
        maxLong = point.getLongitudeE6();
}

BoundingBoxE6 boundingBox = new BoundingBoxE6(maxLat, maxLong, minLat, minLong);
mMapView.zoomToBoundingBox(boundingBox);


来源:https://stackoverflow.com/questions/23842526/osmdroid-bounds-marker

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!