1. 程式人生 > >高德地圖 獲取定位藍點旋轉角度 獲取Marker物件

高德地圖 獲取定位藍點旋轉角度 獲取Marker物件

高德版本v6.3.0(其它版本可自行測試)

高德沒有提供獲取定位藍點物件的api,如果需要用到該物件,可以用反射獲取。

取得定位小藍點物件的方法如下:(Kotlin版)

//mMap是地圖物件,即AMap,高德SDK6.3.0
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 ab = getSpecifiedFieldObject(a, "ab")
val f = getSpecifiedFieldObject(ab, "f")

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;
    }