【问题标题】:Get the Latitude and Longitude of a position clicked on a maps forge 0.5.1 MapView获取在地图伪造0.5.1 MapView上单击的位置的纬度和经度
【发布时间】:2015-07-16 21:01:36
【问题描述】:

我使用 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 获取点击点的纬度和经度?难道我做错了什么? 如果点击后无法获得坐标,我认为图书馆缺少一些非常重要的东西。

谢谢

【问题讨论】:

    标签: java android geolocation mapsforge


    【解决方案1】:

    您可以利用TileRendererLayer 中的onTap 事件,这样您就不需要处理`View.onTouch 事件,这在识别单击/单击时更加困难。

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

    【讨论】:

      【解决方案2】:

      使用

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 不,我已将我的 MapView 声明为 org.mapsforge.map.android.view.MapView。
        • 嗯。我只是查看了您指向的文档-那里也没有 getProjection 函数。不知道您为什么认为应该存在该功能。
        • 旧版本的 mapsforge 像 0.3 或 0.4 包含 getProjection 方法。关键是,有没有办法获得点击点的坐标?奇怪的是旧版本比上一个更完整。
        • 您应该尽量清楚地处理您的问题。如所写,您的问题看起来像一个编译问题,答案是“他们删除了该功能,您不能使用它”。您想要的是“我如何获得在 mapsforge MapView 上单击的位置的纬度和经度”,这是一个完全合法但完全不同的问题。并且可能会让更多人查看另一个编译问题。
        猜你喜欢
        • 2013-06-18
        • 2011-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-08
        • 1970-01-01
        • 2012-12-08
        • 1970-01-01
        相关资源
        最近更新 更多