【问题标题】:Getting Longitude and Latitude from the GpsMyLocationProvider (OSMdroid)从 GpsMyLocationProvider (OSMdroid) 获取经度和纬度
【发布时间】:2016-11-10 16:00:23
【问题描述】:

我正在使用 OSMdroid 编写导航应用程序。

如何将 GpsMyLocationProvider 中的纬度和经度提取到 Geopoint 中,以便将地图居中放置?

this.mLocationOverlay = new MyLocationNewOverlay(new GpsMyLocationProvider(this),map); this.mLocationOverlay.enableMyLocation();

我试过这个。但这只会使应用程序崩溃,只要我按下此方法的按钮: mapController.setCenter((IGeoPoint) this.mLocationOverlay);

【问题讨论】:

  • 应用崩溃时出现什么错误? mapController 是否为空?
  • @jimmycarr 当我调试时,地图控制器在最后一行是“MapController@4177”
  • 您在控制台中看到错误吗?你得到什么类型的异常?
  • 引起:java.lang.ClassCastException:org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay 无法转换为 org.osmdroid.api.IGeoPoint

标签: java android osmdroid android-gps


【解决方案1】:

看起来您将MyLocationNewOverlay 转换为IGeoPoint,但它没有实现接口IGeoPoint,因此您将收到ClassCastException。确保将有效的IGeoPoint 传递给setCenter()

【讨论】:

  • 好的,首先我需要用GeoPoint myLocation = new GeoPoint(longitude, latitude) 创建一个合适的地理点?问题是,我不知道如何从 GpsMyLocationProvider 获取经度和纬度。
  • 您可以拨打位置提供商的.getLastKnownLocation().getLatitude()
  • Android Studio 告诉我:不能从静态上下文中引用非静态方法“getLastKnowLocation()”。抱歉,我是 Java 新手。
  • 您必须在您创建的 GpsMyLocationProvider 实例上调用该方法。在你的情况下,你可以做this.mLocationOverlay.getMyLocationProvider().getLastKnownLocation().getLatitude()
  • 这是我现在的代码:double latitude = this.mLocationOverlay.getMyLocationProvider().getLastKnownLo‌​cation().getLatitude‌​(); Android Studio 告诉我:“无法解析方法 getLastKnownLocation()”
猜你喜欢
  • 2020-11-07
  • 1970-01-01
  • 1970-01-01
  • 2019-03-25
  • 2016-09-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多