2012-12-12 156 views
17

我在我的应用程序中为用户的当前位置使用自定义图标,并且希望在升级到新的Google地图库时保持此方式。Android谷歌地图V2更改我的位置图标

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

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

有人知道如何在v2上完成此操作吗?

回答

3

好了,我只是想,如果你不添加标题或摘录,标记不会对点击事件的影响,以及它作为行为一个图像覆盖。虽然它并不完美,它适合我的需要

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

谢谢大家

13

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

_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 –

+1

我的错误,我没有意识到您的意思是Google Play版本的地图。请参阅上面我更新的答案。这很好,因为它现在与Google Maps Javascript版本的行为非常相似。 – javram

+1

@RobertEstivill:AFAIK,这是你唯一的选择,至少在坚持记录/支持的行为时。 – CommonsWare

0

肯定是有一种方式来显示当前位置的自定义图标。 结帐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))); 
+0

这可以完成,但它与当前MyLocation机制不兼容。换句话说,您可以使用不带所有窗口信息的标记,但是您必须手动实施LocationListener来移动您绘制的位置。您不能重复使用内置的位置功能 –

+0

这是AFAIK的唯一方法。请张贴一些代码,以便我可以了解您的问题。谢谢。 – GrIsHu