Location change and put Marker on Click in openstreetmap

ぐ巨炮叔叔 提交于 2019-12-12 15:31:58

问题


I am new to Open Street Map map. I want to put the marker on map where i Tapped. I want to delete previous marker also. Please help me. Thanks in advance. Here is my code

Overlay touchOverlay = new Overlay(this) {
    ItemizedIconOverlay<OverlayItem> anotherItemizedIconOverlay = null;

    @Override
    protected void draw(Canvas arg0, MapView arg1, boolean arg2) {

    }

    @Override
    public boolean onSingleTapConfirmed(final MotionEvent e,
            final MapView mapView) {
        Projection proj = mapView.getProjection();
        GeoPoint loc = (GeoPoint) proj.fromPixels((int) e.getX(),
                (int) e.getY());
        String longitude = Double
                .toString(((double) loc.getLongitudeE6()) / 1000000);
        String latitude = Double
                .toString(((double) loc.getLatitudeE6()) / 1000000);
        ArrayList<OverlayItem> overlayArray = new ArrayList<OverlayItem>();
        OverlayItem mapItem = new OverlayItem("", "", new GeoPoint(
                (((double) loc.getLatitudeE6()) / 1000000),
                (((double) loc.getLongitudeE6()) / 1000000)));
        Drawable marker = null;
        mapItem.setMarker(marker);
        overlayArray.add(mapItem);
        if (anotherItemizedIconOverlay == null) {
            anotherItemizedIconOverlay = new ItemizedIconOverlay<OverlayItem>(
                    getApplicationContext(), overlayArray, null);
            mapView.getOverlays().add(anotherItemizedIconOverlay);
            mapView.invalidate();
        } else {
            mapView.getOverlays().remove(anotherItemizedIconOverlay);
            mapView.invalidate();
            anotherItemizedIconOverlay = new ItemizedIconOverlay<OverlayItem>(
                    getApplicationContext(), overlayArray, null);
            mapView.getOverlays().add(anotherItemizedIconOverlay);
        }

        return true;
    }
};

回答1:


Finally i get solution of this problem. here is my answer.

@Override
    public boolean onSingleTapConfirmed(MotionEvent e, MapView mapView) {

        Projection proj = mapView.getProjection();
        p = (GeoPoint) proj.fromPixels((int) e.getX(), (int) e.getY());
         proj = mapView.getProjection();
         loc = (GeoPoint) proj.fromPixels((int) e.getX(), (int) e.getY());
         String longitude = Double
         .toString(((double) loc.getLongitudeE6()) / 1000000);
         String latitude = Double
         .toString(((double) loc.getLatitudeE6()) / 1000000);
         Toast toast = Toast.makeText(getApplicationContext(),
         "Longitude: "
         + longitude + " Latitude: " + latitude, Toast.LENGTH_SHORT);
         toast.show();
        return true;
    }

private void addLocation(double lat, double lng) {
    // ---Add a location marker---

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

    Drawable marker = getResources().getDrawable(
            android.R.drawable.star_big_on);

    int markerWidth = marker.getIntrinsicWidth();
    int markerHeight = marker.getIntrinsicHeight();

    marker.setBounds(0, markerHeight, markerWidth, 0);

    ResourceProxy resourceProxy = new DefaultResourceProxyImpl(
            getApplicationContext());

    myItemizedOverlay = new MyItemizedOverlay(marker, resourceProxy);

    List<Overlay> listOfOverlays = mapView.getOverlays();
    listOfOverlays.clear();
    listOfOverlays.add(myItemizedOverlay);

    mapView.invalidate();
}


来源:https://stackoverflow.com/questions/19403420/location-change-and-put-marker-on-click-in-openstreetmap

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