高德地图安卓 SDK v6.3.0、v6.5.0、v6.9.0(其它版本可自行测试)
高德没有提供获取定位蓝点对象的api,如果需要用到该对象,可以用反射获取。
取得定位小蓝点对象的方法如下:(Kotlin版)
//2020-7-2更新,高德SDK 7.5.0
//mMap是地图对象,即AMap
val a = getSpecifiedFieldObject(mMap, "mapDelegate")//com.amap.api.col.stl3.l.class
val ac = getSpecifiedFieldObject(a, "P")//(LocationSource上面一个)
val f = getSpecifiedFieldObject(ac, "f")
//小蓝点对象
val marker = f as? Marker
//小蓝点的旋转角度
val rotation = (marker?.rotateAngle ?: 0f)
//2019-12-23更新,高德SDK6.3.0、6.9.0、7.1.0
//mMap是地图对象,即AMap
val a = getSpecifiedFieldObject(mMap, "a")
val ac = getSpecifiedFieldObject(a, "ac")
val f = getSpecifiedFieldObject(ac, "f")
//小蓝点对象
val marker = f as? Marker
//小蓝点的旋转角度
val rotation = (marker?.rotateAngle ?: 0f)
2018/11/24更新,高德SDK 6.5.0对应以下字段
val a = getSpecifiedFieldObject(mMap, "a")
val ac = getSpecifiedFieldObject(a, "ab")
val f = getSpecifiedFieldObject(ac, "f")
//小蓝点对象
val marker = f as? Marker
//小蓝点的旋转角度
val rotation = (marker?.rotateAngle ?: 0f)
getSpecifiedFieldObject
方法如下
/**
* 反射获取指定字段的值(是一个对象)
*/
public static Object getSpecifiedFieldObject(Object obj, String fieldName) {
if (obj == null) return null;
Class<?> clazz = obj.getClass();
Object object = null;
try {
Field field = clazz.getDeclaredField(fieldName);
field.setAccessible(true);
object = field.get(obj);
} catch (Exception e) {
e.printStackTrace();
}
return object;
}