File tree Expand file tree Collapse file tree 2 files changed +51
-9
lines changed
Libraries/Components/MapView Expand file tree Collapse file tree 2 files changed +51
-9
lines changed Original file line number Diff line number Diff line change @@ -252,6 +252,56 @@ var AnnotationExample = React.createClass({
252
252
253
253
} ) ;
254
254
255
+ var DraggableAnnotationExample = React . createClass ( {
256
+
257
+ createAnnotation ( longitude , latitude ) {
258
+ return {
259
+ longitude,
260
+ latitude,
261
+ draggable : true ,
262
+ onDragStateChange : ( event ) => {
263
+ if ( event . state === 'idle' ) {
264
+ this . setState ( {
265
+ annotations : [ this . createAnnotation ( event . longitude , event . latitude ) ] ,
266
+ } ) ;
267
+ }
268
+ console . log ( 'Drag state: ' + event . state ) ;
269
+ } ,
270
+ } ;
271
+ } ,
272
+
273
+ getInitialState ( ) {
274
+ return {
275
+ isFirstLoad : true ,
276
+ annotations : [ ] ,
277
+ mapRegion : undefined ,
278
+ } ;
279
+ } ,
280
+
281
+ render ( ) {
282
+ if ( this . state . isFirstLoad ) {
283
+ var onRegionChangeComplete = ( region ) => {
284
+ //When the MapView loads for the first time, we can create the annotation at the
285
+ //region that was loaded.
286
+ this . setState ( {
287
+ isFirstLoad : false ,
288
+ annotations : [ this . createAnnotation ( region . longitude , region . latitude ) ] ,
289
+ } ) ;
290
+ } ;
291
+ }
292
+
293
+ return (
294
+ < MapView
295
+ style = { styles . map }
296
+ onRegionChangeComplete = { onRegionChangeComplete }
297
+ region = { this . state . mapRegion }
298
+ annotations = { this . state . annotations }
299
+ />
300
+ ) ;
301
+ } ,
302
+
303
+ } ) ;
304
+
255
305
var styles = StyleSheet . create ( {
256
306
map : {
257
307
height : 150 ,
@@ -338,12 +388,7 @@ exports.examples = [
338
388
{
339
389
title : 'Draggable pin' ,
340
390
render ( ) {
341
- return < AnnotationExample style = { styles . map } annotation = { {
342
- draggable : true ,
343
- onDragStateChange : ( event ) => {
344
- console . log ( 'Drag state: ' + event . state ) ;
345
- } ,
346
- } } /> ;
391
+ return < DraggableAnnotationExample /> ;
347
392
}
348
393
} ,
349
394
{
Original file line number Diff line number Diff line change @@ -437,9 +437,6 @@ const MapView = React.createClass({
437
437
onAnnotationDragStateChange = ( event : Event ) => {
438
438
const annotation = findByAnnotationId ( event . nativeEvent . annotationId ) ;
439
439
if ( annotation ) {
440
- // Update location
441
- annotation . latitude = event . nativeEvent . latitude ;
442
- annotation . longitude = event . nativeEvent . longitude ;
443
440
// Call callback
444
441
annotation . onDragStateChange &&
445
442
annotation . onDragStateChange ( event . nativeEvent ) ;
You can’t perform that action at this time.
0 commit comments