获取点击地图伪造0.5.1 MapView的位置的纬度和经度

时间:2015-05-06 15:46:35

标签: java android geolocation mapsforge

我使用maps forge 0.5.1库(api reference) 我已遵循所有正式指示,但我遇到以下问题:

我在

上附加了一个onTouchListener
  

(org.mapsforge.map.android.view.MapView)MapView类

但是当我尝试调用方法mapView.getProjection()时,我得到了错误"无法解析方法getProjection()。即使在许多在线示例中调用该方法,也没有在官方api引用或MapView.class中。 org.mapsforge.map.android.view.MapView

 org.mapsforge.map.android.view.MapView mapView;
 mapView.setOnTouchListener(new View.OnTouchListener(){

        @Override
        public boolean onTouch(View v, MotionEvent ev) {
            int actionType = ev.getAction();
            switch (actionType) {
                case MotionEvent.ACTION_DOWN:

                    return false;

                case MotionEvent.ACTION_UP:
                    mapView.getProjection(); // the error is here

                    return true;
                case MotionEvent.ACTION_MOVE:
                    return false;
            }
            return false;
        }
    });

有没有其他方法可以使用mapsforge lib获取分接点的纬度和经度?难道我做错了什么? 如果在点击后没有办法获得坐标,我认为图书馆遗漏了一些非常重要的东西。

谢谢

3 个答案:

答案 0 :(得分:6)

使用

new MapViewProjection(mapView).fromPixels(double x, double y);

它在版本0.4左右反转了连接 - 现在不是从mapview获取投影,而是将mapview传递给投影。

答案 1 :(得分:1)

您确定导入了正确的MapView吗?有一个谷歌版本的MapView没有这个功能,如果你导入它可能会认为它是错误的类。

答案 2 :(得分:1)

您可以使用onTap中的TileRendererLayer事件,这样您就无需处理``View.onTouch事件,这在识别单击/点击时更加困难。< / p>

// tile renderer layer using internal render theme
MapDataStore mapDataStore = new MapFile(filename);
TileRendererLayer tileRendererLayer = 
        new TileRendererLayer(tileCache,
                              mapDataStore,
                              this.mapView.getModel().mapViewPosition,
                              AndroidGraphicFactory.INSTANCE) {
    @Override
    public boolean onTap(LatLong tapLatLong, Point layerXY, Point tapXY) {
        ShowTapLocation(tapLatLong);
        return true;
    }
};