【问题标题】:Google Maps: Current Location Marker (Period updates for GMaps)Google 地图:当前位置标记(地图的定期更新)
【发布时间】:2016-11-03 23:31:33
【问题描述】:

因此,我已经能够通过开发者 android 页面定期更新我当前的位置,从而让您的应用了解位置。现在,每当我的位置发生变化时,我都能获得该位置的纬度和经度。但是,我该用 Google 地图来实现这个功能吗?

下面这一行在我的地图上实现了一个按钮,用于查找我的当前位置并在其上放置一个蓝点/标记(不接收定期更新)

mMap.setMyLocationEnabled(true);

我应该在我的onLocationChanged() 事件中添加什么内容才能使蓝点更新为 经纬度?

【问题讨论】:

    标签: java android google-maps android-studio


    【解决方案1】:
    mMap.setMyLocationEnabled(true);
    

    这是当前位置的蓝色标记的简单技巧,并且为我做了这个技巧。

    【讨论】:

      【解决方案2】:

      蓝点和精确圆圈由地图自动管理,您无法对其进行更新或更改其符号系统。事实上,它是使用它自己的 LocationProvider 自动管理的,因此它可以获得可用的最佳位置分辨率(您无需编写代码来更新它,只需使用 mMap.setMyLocationEnabled(true); 启用它)。

      如果你想模拟它的行为,你可以写这样的东西(你应该禁用我的位置层做mMap.setMyLocationEnabled(false);):

      private BitmapDescriptor markerDescriptor;
      private int accuracyStrokeColor = Color.argb(255, 130, 182, 228);
      private int accuracyFillColor = Color.argb(100, 130, 182, 228);
      
      private Marker positionMarker;
      private Circle accuracyCircle;
      
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          // ...
      
          markerDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.yourmarkericon);
      }
      
      @Override
      public void onLocationChanged(Location location) {
          double latitude = location.getLatitude();
          double longitude = location.getLongitude();
          float accuracy = location.getAccuracy();
      
          if (positionMarker != null) {
              positionMarker.remove();
          }
          final MarkerOptions positionMarkerOptions = new MarkerOptions()
                  .position(new LatLng(latitude, longitude))
                  .icon(markerDescriptor)
                  .anchor(0.5f, 0.5f);
          positionMarker = mMap.addMarker(positionMarkerOptions);
      
          if (accuracyCircle != null) {
              accuracyCircle.remove();
          }
          final CircleOptions accuracyCircleOptions = new CircleOptions()
                  .center(new LatLng(latitude, longitude))
                  .radius(accuracy)
                  .fillColor(accuracyFillColor)
                  .strokeColor(accuracyStrokeColor)
                  .strokeWidth(2.0f);
          accuracyCircle = mMap.addCircle(accuracyCircleOptions);
      }
      

      【讨论】:

      • 所以上面的代码允许更新蓝点,而默认情况下,蓝点不更新?只获取最后一个已知位置?
      猜你喜欢
      • 1970-01-01
      • 2015-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      • 2017-01-02
      • 1970-01-01
      • 2016-03-07
      相关资源
      最近更新 更多