Skip to content

Commit a6cd259

Browse files
author
lovebing
committed
Fixed bugs and added onMapPoiClick
1 parent dd82387 commit a6cd259

File tree

5 files changed

+29
-133
lines changed

5 files changed

+29
-133
lines changed
Lines changed: 0 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,13 @@
11
package org.lovebing.reactnative.baidumap;
22

3-
import android.support.annotation.Nullable;
4-
import android.util.Log;
5-
6-
import com.baidu.location.BDLocation;
7-
import com.baidu.location.BDLocationListener;
8-
import com.baidu.location.LocationClient;
9-
import com.baidu.location.LocationClientOption;
10-
import com.baidu.mapapi.map.BaiduMap;
11-
import com.baidu.mapapi.map.BitmapDescriptor;
12-
import com.baidu.mapapi.map.BitmapDescriptorFactory;
13-
import com.baidu.mapapi.map.Marker;
14-
import com.baidu.mapapi.search.geocode.ReverseGeoCodeOption;
15-
import com.facebook.react.bridge.Arguments;
16-
import com.facebook.react.bridge.ReactContextBaseJavaModule;
173
import com.facebook.react.bridge.ReactApplicationContext;
184

19-
import com.baidu.mapapi.map.MapView;
20-
import com.facebook.react.bridge.ReactMethod;
21-
import com.baidu.mapapi.model.LatLng;
22-
import com.baidu.mapapi.map.OverlayOptions;
23-
import com.baidu.mapapi.map.MarkerOptions;
24-
import com.baidu.mapapi.map.MapStatus;
25-
import com.baidu.mapapi.map.MapStatusUpdate;
26-
import com.baidu.mapapi.map.MapStatusUpdateFactory;
27-
28-
import com.baidu.mapapi.search.geocode.GeoCoder;
29-
import com.baidu.mapapi.search.geocode.OnGetGeoCoderResultListener;
30-
import com.baidu.mapapi.search.geocode.GeoCodeResult;
31-
import com.baidu.mapapi.search.core.SearchResult;
32-
import com.baidu.mapapi.search.geocode.ReverseGeoCodeResult;
33-
import com.baidu.mapapi.search.geocode.GeoCodeOption;
34-
import com.baidu.mapapi.utils.CoordinateConverter;
35-
import com.baidu.mapapi.utils.CoordinateConverter.CoordType;
36-
37-
import com.facebook.react.bridge.WritableMap;
38-
import com.facebook.react.modules.core.DeviceEventManagerModule;
39-
40-
415
/**
426
* Created by lovebing on 1/30/2016.
437
*/
448
public class BaiduMapModule extends BaseModule {
459

4610
private static final String REACT_CLASS = "BaiduMapModule";
47-
48-
49-
private Marker marker;
50-
5111
public BaiduMapModule(ReactApplicationContext reactContext) {
5212
super(reactContext);
5313
context = reactContext;
@@ -56,59 +16,4 @@ public BaiduMapModule(ReactApplicationContext reactContext) {
5616
public String getName() {
5717
return REACT_CLASS;
5818
}
59-
60-
@ReactMethod
61-
public void setMarker(double latitude, double longitude) {
62-
if(marker != null) {
63-
marker.remove();
64-
}
65-
LatLng point = new LatLng(latitude, longitude);
66-
BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.mipmap.icon_gcoding);
67-
OverlayOptions option = new MarkerOptions()
68-
.icon(bitmap)
69-
.position(point);
70-
marker = (Marker)getMap().addOverlay(option);
71-
}
72-
73-
@ReactMethod
74-
public void setZoom(int zoom) {
75-
MapStatus mapStatus = new MapStatus.Builder()
76-
.zoom(zoom)
77-
.build();
78-
MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mapStatus);
79-
getMap().setMapStatus(mapStatusUpdate);
80-
}
81-
82-
@ReactMethod
83-
public void moveToCenter(double latitude, double longitude, int zoom) {
84-
LatLng point = new LatLng(latitude, longitude);
85-
MapStatus mapStatus = new MapStatus.Builder()
86-
.target(point)
87-
.zoom(zoom)
88-
.build();
89-
MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mapStatus);
90-
getMap().setMapStatus(mapStatusUpdate);
91-
}
92-
93-
@ReactMethod
94-
public void setShowZoomControls(boolean show) {
95-
getMapView().showZoomControls(show);
96-
}
97-
98-
@ReactMethod
99-
public void setMapType(int mapType) {
100-
getMap().setMapType(mapType);
101-
}
102-
103-
/**
104-
*
105-
* @return
106-
*/
107-
protected MapView getMapView() {
108-
return BaiduMapViewManager.getMapView();
109-
}
110-
111-
protected BaiduMap getMap() {
112-
return BaiduMapViewManager.getMapView().getMap();
113-
}
11419
}

android/src/main/java/org/lovebing/reactnative/baidumap/BaiduMapViewManager.java

Lines changed: 22 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ public class BaiduMapViewManager extends ViewGroupManager<MapView> {
3838

3939
private static final String REACT_CLASS = "RCTBaiduMapView";
4040

41-
private static MapView mMapView;
4241
private ThemedReactContext mReactContext;
4342

4443
private ReadableArray childrenPoints;
@@ -57,12 +56,9 @@ public void initSDK(Context context) {
5756

5857
public MapView createViewInstance(ThemedReactContext context) {
5958
mReactContext = context;
60-
if(mMapView != null) {
61-
mMapView.onDestroy();
62-
}
63-
mMapView = new MapView(context);
64-
setListeners(mMapView);
65-
return mMapView;
59+
MapView mapView = new MapView(context);
60+
setListeners(mapView);
61+
return mapView;
6662
}
6763

6864
@Override
@@ -197,25 +193,27 @@ private WritableMap getEventParams(MapStatus mapStatus) {
197193

198194
@Override
199195
public void onMapStatusChangeStart(MapStatus mapStatus) {
200-
sendEvent("onMapStatusChangeStart", getEventParams(mapStatus));
196+
sendEvent(mapView, "onMapStatusChangeStart", getEventParams(mapStatus));
201197
}
202198

203199
@Override
204200
public void onMapStatusChange(MapStatus mapStatus) {
205-
sendEvent("onMapStatusChange", getEventParams(mapStatus));
201+
sendEvent(mapView, "onMapStatusChange", getEventParams(mapStatus));
206202
}
207203

208204
@Override
209205
public void onMapStatusChangeFinish(MapStatus mapStatus) {
210-
mMarkerText.setVisibility(View.GONE);
211-
sendEvent("onMapStatusChangeFinish", getEventParams(mapStatus));
206+
if(mMarkerText.getVisibility() != View.GONE) {
207+
mMarkerText.setVisibility(View.GONE);
208+
}
209+
sendEvent(mapView, "onMapStatusChangeFinish", getEventParams(mapStatus));
212210
}
213211
});
214212

215213
map.setOnMapLoadedCallback(new BaiduMap.OnMapLoadedCallback() {
216214
@Override
217215
public void onMapLoaded() {
218-
sendEvent("onMapLoaded", null);
216+
sendEvent(mapView, "onMapLoaded", null);
219217
}
220218
});
221219

@@ -226,12 +224,18 @@ public void onMapClick(LatLng latLng) {
226224
WritableMap writableMap = Arguments.createMap();
227225
writableMap.putDouble("latitude", latLng.latitude);
228226
writableMap.putDouble("longitude", latLng.longitude);
229-
sendEvent("onMapClick", writableMap);
227+
sendEvent(mapView, "onMapClick", writableMap);
230228
}
231229

232230
@Override
233231
public boolean onMapPoiClick(MapPoi mapPoi) {
234-
return false;
232+
WritableMap writableMap = Arguments.createMap();
233+
writableMap.putString("name", mapPoi.getName());
234+
writableMap.putString("uid", mapPoi.getUid());
235+
writableMap.putDouble("latitude", mapPoi.getPosition().latitude);
236+
writableMap.putDouble("longitude", mapPoi.getPosition().longitude);
237+
sendEvent(mapView, "onMapPoiClick", writableMap);
238+
return true;
235239
}
236240
});
237241
map.setOnMapDoubleClickListener(new BaiduMap.OnMapDoubleClickListener() {
@@ -240,7 +244,7 @@ public void onMapDoubleClick(LatLng latLng) {
240244
WritableMap writableMap = Arguments.createMap();
241245
writableMap.putDouble("latitude", latLng.latitude);
242246
writableMap.putDouble("longitude", latLng.longitude);
243-
sendEvent("onMapDoubleClick", writableMap);
247+
sendEvent(mapView, "onMapDoubleClick", writableMap);
244248
}
245249
});
246250

@@ -262,7 +266,7 @@ public boolean onMarkerClick(Marker marker) {
262266
position.putDouble("longitude", marker.getPosition().longitude);
263267
writableMap.putMap("position", position);
264268
writableMap.putString("title", marker.getTitle());
265-
sendEvent("onMarkerClick", writableMap);
269+
sendEvent(mapView, "onMarkerClick", writableMap);
266270
return true;
267271
}
268272
});
@@ -274,23 +278,14 @@ public boolean onMarkerClick(Marker marker) {
274278
* @param eventName
275279
* @param params
276280
*/
277-
private void sendEvent(String eventName, @Nullable WritableMap params) {
281+
private void sendEvent(MapView mapView, String eventName, @Nullable WritableMap params) {
278282
WritableMap event = Arguments.createMap();
279283
event.putMap("params", params);
280284
event.putString("type", eventName);
281285
mReactContext
282286
.getJSModule(RCTEventEmitter.class)
283-
.receiveEvent(mMapView.getId(),
287+
.receiveEvent(mapView.getId(),
284288
"topChange",
285289
event);
286290
}
287-
288-
289-
/**
290-
*
291-
* @return
292-
*/
293-
public static MapView getMapView() {
294-
return mMapView;
295-
}
296291
}

ios/RCTBaiduMap/RCTBaiduMapViewManager.m

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -100,13 +100,12 @@ - (void) mapView:(BMKMapView *)mapView
100100
onClickedMapPoi:(BMKMapPoi *)mapPoi {
101101
NSLog(@"onClickedMapPoi");
102102
NSDictionary* event = @{
103-
@"type": @"onClickedMapPoi",
103+
@"type": @"onMapPoiClick",
104104
@"params": @{
105-
@"title": mapPoi.text,
106-
@"position": @{
107-
@"latitude": @(mapPoi.pt.latitude),
108-
@"longitude": @(mapPoi.pt.longitude)
109-
}
105+
@"name": mapPoi.text,
106+
@"uid": mapPoi.uid,
107+
@"latitude": @(mapPoi.pt.latitude),
108+
@"longitude": @(mapPoi.pt.longitude)
110109
}
111110
};
112111
[self sendEvent:event];

js/MapModule.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,15 @@ const _module = NativeModules.BaiduMapModule;
1717
export default {
1818
setMarker (lat, lng) {
1919
console.warn('This method was deprecated, please use MapView prop instead');
20-
_module.setMarker(lat, lng);
2120
},
2221
setMapType (type) {
2322
console.warn('This method was deprecated, please use MapView prop instead');
24-
_module.setMapType(type);
2523
},
2624
setZoom (zoom) {
2725
console.warn('This method was deprecated, please use MapView prop instead');
28-
_module.setZoom(zoom);
2926
},
3027
moveToCenter (lat, lng, zoom) {
3128
console.warn('This method was deprecated, please use MapView prop instead');
32-
_module.moveToCenter(lat, lng, zoom);
3329
},
3430
geocode(city, addr) {
3531
console.warn('This method was deprecated, please use Geolocation.geocode instead');

js/MapView.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ export default class MapView extends Component {
3131
onMapLoaded: PropTypes.func,
3232
onMapClick: PropTypes.func,
3333
onMapDoubleClick: PropTypes.func,
34-
onMarkerClick: PropTypes.func
34+
onMarkerClick: PropTypes.func,
35+
onMapPoiClick: PropTypes.func
3536
};
3637

3738
static defaultProps = {

0 commit comments

Comments
 (0)