package com.bee.baidumapview; import android.app.Activity; import android.util.Log; import com.baidu.mapapi.map.BitmapDescriptor; import com.baidu.mapapi.map.BitmapDescriptorFactory; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.map.MarkerOptions; import com.baidu.mapapi.map.OverlayOptions; import com.baidu.mapapi.model.LatLng; import com.facebook.react.bridge.ReadableArray; import com.facebook.react.uimanager.LayoutShadowNode; import com.facebook.react.uimanager.ReactProp; import com.facebook.react.uimanager.SimpleViewManager; import com.facebook.react.uimanager.ThemedReactContext; public class BaiduMapViewManager extends SimpleViewManager<MapView> { public static final String RCT_CLASS = "RCTBaiduMap"; public static final String TAG = "RCTBaiduMap"; private Activity mActivity; @Override public LayoutShadowNode createShadowNodeInstance() { return new BaiduMapShadowNode(); } @Override public Class getShadowNodeClass() { return BaiduMapShadowNode.class; } public BaiduMapViewManager(Activity activity) { mActivity = activity; } /** * 地图模式 * * @param mapView * @param type * 1. 普通 * 2.卫星 */ @ReactProp(name="mode", defaultInt = 1) public void setMode(MapView mapView, int type) { Log.i(TAG, "mode:" + type); mapView.getMap().setMapType(type); } /** * 实时交通图 * * @param mapView * @param isEnabled */ @ReactProp(name="trafficEnabled", defaultBoolean = false) public void setTrafficEnabled(MapView mapView, boolean isEnabled) { Log.d(TAG, "trafficEnabled:" + isEnabled); mapView.getMap().setTrafficEnabled(isEnabled); } /** * 实时道路热力图 * * @param mapView * @param isEnabled */ @ReactProp(name="heatMapEnabled", defaultBoolean = false) public void setHeatMapEnabled(MapView mapView, boolean isEnabled) { Log.d(TAG, "heatMapEnabled" + isEnabled); mapView.getMap().setBaiduHeatMapEnabled(isEnabled); } /** * 显示地理标记 * * @param mapView * @param array */ @ReactProp(name="marker") public void setMarker(MapView mapView, ReadableArray array) { Log.d(TAG, "marker:" + array); if (array != null) { for (int i = 0; i < array.size(); i++) { ReadableArray sub = array.getArray(i); //定义Maker坐标点 LatLng point = new LatLng(sub.getDouble(0), sub.getDouble(1)); //构建Marker图标 BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.icon_gcoding); //构建MarkerOption,用于在地图上添加Marker OverlayOptions option = new MarkerOptions() .position(point) .icon(bitmap) .draggable(true); //在地图上添加Marker,并显示 mapView.getMap().addOverlay(option); } } } @Override public String getName() { return RCT_CLASS; } @Override protected MapView createViewInstance(ThemedReactContext reactContext) { return new MapView(mActivity); } }