private void initBaiduMap() { mapView = (MapView) findViewById(R.id.bmapView); baiduMap = mapView.getMap(); baiduMap.setMaxAndMinZoomLevel(18, 13); IntentFilter iFilter = new IntentFilter(); iFilter.addAction(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR); iFilter.addAction(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR); receiver = new BaiduReceiver(); registerReceiver(receiver, iFilter); geoCoder = GeoCoder.newInstance(); geoCoder.setOnGetGeoCodeResultListener(this); Intent intent = getIntent(); intentType = intent.getStringExtra(TYPE); initActionBar(R.string.chat_position); if (intentType.equals(TYPE_SELECT)) { // 选择发送位置 // 开启定位图层 baiduMap.setMyLocationEnabled(true); baiduMap.setMyLocationConfigeration( new MyLocationConfigeration(MyLocationConfigeration.LocationMode.NORMAL, true, null)); // 定位初始化 locClient = new LocationClient(this); locClient.registerLocationListener(myListener); LocationClientOption option = new LocationClientOption(); option.setProdName("avosim"); option.setOpenGps(true); option.setCoorType("bd09ll"); option.setScanSpan(1000); option.setOpenGps(true); option.setIsNeedAddress(true); option.setIgnoreKillProcess(true); locClient.setLocOption(option); locClient.start(); if (locClient != null && locClient.isStarted()) { locClient.requestLocation(); } if (lastLocation != null) { // 显示在地图上 LatLng ll = new LatLng(lastLocation.getLatitude(), lastLocation.getLongitude()); MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll); baiduMap.animateMapStatus(u); } } else { Bundle b = intent.getExtras(); LatLng latlng = new LatLng(b.getDouble(LATITUDE), b.getDouble(LONGITUDE)); // 维度在前,经度在后 baiduMap.setMapStatus(MapStatusUpdateFactory.newLatLng(latlng)); OverlayOptions ooA = new MarkerOptions().position(latlng).icon(descriptor).zIndex(9); baiduMap.addOverlay(ooA); } }
@Override public MapView createViewInstance(ThemedReactContext context) { reactContext = context; mView = new MapView(context); mView.onCreate(null); mView.onResume(); map = mView.getMap(); if (map == null) { sendMapError("Map is null", "map_null"); } else { map.getUiSettings().setMyLocationButtonEnabled(true); map.setMyLocationEnabled(true); // We need to be sure to disable location-tracking when app enters background, in-case some // other module // has acquired a wake-lock and is controlling location-updates, otherwise, location-manager // will be left // updating location constantly, killing the battery, even though some other location-mgmt // module may // desire to shut-down location-services. LifecycleEventListener listener = new LifecycleEventListener() { @Override public void onHostResume() { map.setMyLocationEnabled(true); } @Override public void onHostPause() { map.setMyLocationEnabled(false); } @Override public void onHostDestroy() {} }; context.addLifecycleEventListener(listener); try { MapsInitializer.initialize(context.getApplicationContext()); map.setOnCameraChangeListener(getCameraChangeListener()); map.setOnMarkerClickListener(getMarkerClickListener()); // add location button click listener map.setOnMyLocationButtonClickListener( new GoogleMap.OnMyLocationButtonClickListener() { @Override public boolean onMyLocationButtonClick() { CameraPosition position = map.getCameraPosition(); mlastZoom = (int) position.zoom; return false; } }); } catch (Exception e) { e.printStackTrace(); sendMapError("Map initialize error", "map_init_error"); } } return mView; }