Commit 05b9a735 authored by 7c00's avatar 7c00

添加 android Marker#lockToScreen 接口

resolve #112
parent e1e9a924
package cn.qiuxiang.react.amap3d package cn.qiuxiang.react.amap3d
import android.content.res.Resources
import com.amap.api.maps.AMapUtils import com.amap.api.maps.AMapUtils
import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.LatLng
import com.facebook.react.bridge.Promise import com.facebook.react.bridge.Promise
...@@ -17,4 +18,7 @@ class AMapUtilsModule(reactContext: ReactApplicationContext) : ReactContextBaseJ ...@@ -17,4 +18,7 @@ class AMapUtilsModule(reactContext: ReactApplicationContext) : ReactContextBaseJ
fun distance(lat1: Double, lng1: Double, lat2: Double, lng2: Double, promise: Promise) { fun distance(lat1: Double, lng1: Double, lat2: Double, lng2: Double, promise: Promise) {
promise.resolve(AMapUtils.calculateLineDistance(LatLng(lat1, lng1), LatLng(lat2, lng2))) promise.resolve(AMapUtils.calculateLineDistance(LatLng(lat1, lng1), LatLng(lat2, lng2)))
} }
} }
\ No newline at end of file
val Int.toPx: Int
get() = (this * Resources.getSystem().displayMetrics.density).toInt()
...@@ -4,8 +4,10 @@ import android.content.Context ...@@ -4,8 +4,10 @@ import android.content.Context
import android.graphics.Bitmap import android.graphics.Bitmap
import android.graphics.Canvas import android.graphics.Canvas
import android.view.View import android.view.View
import cn.qiuxiang.react.amap3d.toPx
import com.amap.api.maps.AMap import com.amap.api.maps.AMap
import com.amap.api.maps.model.* import com.amap.api.maps.model.*
import com.facebook.react.bridge.ReadableArray
import com.facebook.react.views.view.ReactViewGroup import com.facebook.react.views.view.ReactViewGroup
class AMapMarker(context: Context) : ReactViewGroup(context), AMapOverlay { class AMapMarker(context: Context) : ReactViewGroup(context), AMapOverlay {
...@@ -157,4 +159,12 @@ class AMapMarker(context: Context) : ReactViewGroup(context), AMapOverlay { ...@@ -157,4 +159,12 @@ class AMapMarker(context: Context) : ReactViewGroup(context), AMapOverlay {
anchorV = y.toFloat() anchorV = y.toFloat()
marker?.setAnchor(anchorU, anchorV) marker?.setAnchor(anchorU, anchorV)
} }
fun lockToScreen(args: ReadableArray?) {
if (args != null) {
val x = args.getInt(0).toPx
val y = args.getInt(1).toPx
marker?.setPositionByPixels(x, y)
}
}
} }
...@@ -39,12 +39,14 @@ internal class AMapMarkerManager : ViewGroupManager<AMapMarker>() { ...@@ -39,12 +39,14 @@ internal class AMapMarkerManager : ViewGroupManager<AMapMarker>() {
companion object { companion object {
val UPDATE = 1 val UPDATE = 1
val ACTIVE = 2 val ACTIVE = 2
val LOCK_TO_SCREEN = 3
} }
override fun getCommandsMap(): Map<String, Int> { override fun getCommandsMap(): Map<String, Int> {
return mapOf( return mapOf(
"update" to UPDATE, "update" to UPDATE,
"active" to ACTIVE "active" to ACTIVE,
"lockToScreen" to LOCK_TO_SCREEN
) )
} }
...@@ -52,6 +54,7 @@ internal class AMapMarkerManager : ViewGroupManager<AMapMarker>() { ...@@ -52,6 +54,7 @@ internal class AMapMarkerManager : ViewGroupManager<AMapMarker>() {
when (commandId) { when (commandId) {
UPDATE -> marker.updateIcon() UPDATE -> marker.updateIcon()
ACTIVE -> marker.active = true ACTIVE -> marker.active = true
LOCK_TO_SCREEN -> marker.lockToScreen(args)
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment