【问题标题】:Android Google Maps V2 change My Location IconAndroid Google Maps V2 更改我的位置图标
【发布时间】:2012-12-12 17:55:30
【问题描述】:

我在我的应用程序中为用户的当前位置使用了一个自定义图标,并希望在升级到新的 Google 地图库时保持这种状态。

使用 Google Maps v1 库,我扩展了 MyLocationOverlay 并覆盖了 drawMyLocation 方法以在其中绘制我的自定义图标。

GoogleMap 使用 setMyLocationEnabled 方法启用当前位置,但据我所知,无法自定义它。

有人知道如何在 v2 上实现这一点吗?

【问题讨论】:

    标签: android google-maps


    【解决方案1】:

    在使用自定义图标的地图构造函数中创建一个标记。

    _myLocation = mMap.addMarker(new MarkerOptions()
                          .position(MAP_CENTER)
                          .title("My Location")
                          .icon(BitmapDescriptorFactory.fromResource(R.drawable.mylocation)));
    

    实现一个位置改变的监听器, https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/LocationSource.OnLocationChangedListener

    在调用 Provider 时更新标记位置:

    public void onLocationChanged (Location location)
    {
        _myLocation.position(location); //May have to convert from location to LatLng
    }
    

    【讨论】:

    • 这是以前在 V1 库上完成的方式。在 V2 中,您无需在 Activity 中处理 MapView。此外,V2 上没有可供扩展的 Overlay 类。 developers.google.com/maps/documentation/android/reference/com/…
    • 我的错,我没有意识到你的意思是 Google Play 版本的地图。请参阅我上面的更新答案。这很好,因为它现在与 Google Maps Javascript 版本的行为方式非常相似。
    • @RobertEstivill:AFAIK,这是你唯一的选择,至少在坚持记录/支持的行为的同时。
    • 两个第一的cmet(包括这个我的)已经过时了,请移除。
    【解决方案2】:

    好的,所以我只是想如果您不添加标题或 sn-p,标记将不会对点击事件产生影响,它会充当图像叠加层。虽然不完美,但很适合我的需求

    private Marker marker = mMap.addMarker(new MarkerOptions()
                        .position( latLng)
                        .icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow)));
    

    谢谢大家

    【讨论】:

      【解决方案3】:

      肯定有一种方法可以在当前位置显示自定义图标。 结帐Link您将获得更多想法来自定义地图上的图标。

      试试下面的代码:

       private static final LatLng MELBOURNE = new LatLng(-37.81319, 144.96298);
       private Marker melbourne = mMap.addMarker(new MarkerOptions()
                              .position(MELBOURNE)
                              .title("Melbourne")
                              .snippet("Population: 4,137,400")
                              .icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow)));
      

      【讨论】:

      • 这个是可以的,但是不兼容当前的MyLocation机制。换句话说,您可以在没有所有窗口信息的情况下使用标记,但您必须手动实现 LocationListener 来移动您的位置可绘制对象。您不能重复使用内置的定位功能
      • 这是 AFAIK 的唯一方法。请发布一些代码,以便我了解您的问题。谢谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-31
      • 1970-01-01
      • 1970-01-01
      • 2016-07-15
      • 2013-03-22
      • 1970-01-01
      相关资源
      最近更新 更多