Android Google Maps V2更改我的位置图标

17

我在我的应用程序中使用自定义图标表示用户当前的位置,想要在升级到新的Google Maps库时保持这种方式。

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

GoogleMap使用setMyLocationEnabled方法启用当前位置,但据我所知,没有办法进行自定义。

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

3个回答

14
在地图构造函数中创建一个使用自定义图标的标记。
_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

当提供者被调用时,更新标记的位置:

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

1
这是在V1库中使用的方法。在V2中,您不需要在活动中处理MapView。此外,在V2中没有Overlay类可以继承。https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/model/package-summary - Robert Estivill
1
抱歉,我没有意识到你指的是Google Play版本的地图。请参见我上面更新的答案。这很好,因为现在它与Google Maps Javascript版本的行为非常相似。 - javram
1
据我所知,这是您唯一的选择,至少在坚持文档/支持行为的同时是如此。 - CommonsWare
前两个评论(包括我的)已经过时,请将其删除。 - Felipe

6

好的,我刚刚发现如果您不添加标题或片段,标记将不会在点击事件上产生影响,而且它会作为图像覆盖层。虽然它并不完美,但它可以满足我的需求。

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

感谢大家。

0

肯定有一种方法可以在当前位置显示自定义图标。 查看链接,您将获得更多关于如何在地图上自定义图标的想法。

尝试下面的代码:

 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来移动位置绘图。您无法重用内置的位置能力。 - Robert Estivill
这是我所知道的唯一方法。请发布一些代码,以便我能够了解您的问题。谢谢。 - GrIsHu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接