【问题标题】:Location change and put Marker on Click in openstreetmap位置更改并在openstreetmap中单击标记
【发布时间】:2013-10-16 12:27:36
【问题描述】:

我是 Open Street Map 地图的新手。我想把标记放在我点击的地图上。我也想删除以前的标记。请帮我。 提前致谢。这是我的代码

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;
    }
};

【问题讨论】:

    标签: android openstreetmap marker


    【解决方案1】:

    最后我得到了这个问题的解决方案。这是我的答案。

    @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();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-06
      • 1970-01-01
      • 1970-01-01
      • 2014-05-16
      • 2018-01-18
      • 2019-06-21
      • 1970-01-01
      相关资源
      最近更新 更多