【问题标题】:How to add a setMyLocationEnabled button on OSMap?如何在 OSMap 上添加 setMyLocationEnabled 按钮?
【发布时间】:2015-12-04 15:36:26
【问题描述】:

我们能否在 OSMDroid 上启用“GotoMyLocation”按钮,例如 GoogleMap 上的mMap.setMyLocationEnabled(true);?

我在 MapView 类中没有找到这样的功能。

【问题讨论】:

  • 你解决了吗?

标签: osmdroid


【解决方案1】:

创建其中之一

org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay mylocation = new MyLocationNewOverlay(...);

将其添加到您的 MapView

mMapView.getOverlays().add(mylocation);

那就试试 mylocation.enableFollowLocation();

【讨论】:

  • enableMyLocation() 或 enableFollowLocation() 不是我要找的,因为第一个添加了一个小章来定位我,第二个添加了一个箭头,显示了我遵循的方向。我想要一个按钮,如果我在其他任何地方滚动地图,它可以让我回到原来的位置。
【解决方案2】:

要设置您当前使用的位置,LocationManager 的 LOCATION_SERVICE。这将监听您的 gps 位置并将您的中心设置为当前位置。

LocationManager myLocationManager = (LocationManager) getApplicationContext().getSystemService(LOCATION_SERVICE);
        LocationListenerProxy llp=new LocationListenerProxy(myLocationManager);
        llp.startListening(gpsLocationListener, 1, 1) ; 

将此代码放在您的 onCreate Activity 中,然后在不同的类中定义 locationlistener

public final LocationListener gpsLocationListener = new LocationListener() {
      @Override
      public void onLocationChanged(Location location){  
          textView.setText(location.getLatitude()+","+location.getLongitude());
          Log.d("Location Changed >>> ", location.getLatitude()+","+location.getLongitude());
      }
      public void onProviderDisabled(String provider){}
      public void onProviderEnabled(String provider){}
      public void onStatusChanged(String provider, int status, Bundle extras){}
     };

【讨论】:

  • 有趣的 Rudra,但这又不是我要找的东西,我很惊讶我无法得到答案,因为这是谷歌地图上如此常见的功能。当您使用 SetEnableMyLocation(true) 时,您会在地图右上角获得一个“定位我”按钮,要求将地图置于您的位置中心。当您滚动地图以查看显示区域以获取所需的任何内容时很有用。所以,我正在寻找显示此类按钮的选项。
  • 我认为 osmdroid 库中不存在此功能。但是,您可以在地图上创建一个按钮叠加层并将上述代码附加到该按钮。
  • 如果有人想知道,author's solution seems to be here 还有一个基于该解决方案的示例实现,this osmdroid commit
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-10
  • 2016-07-21
  • 1970-01-01
  • 1970-01-01
  • 2011-04-01
  • 2022-01-24
  • 2011-08-01
相关资源
最近更新 更多