'use strict'; import React, { Component } from 'react'; var Mapbox = require('react-native-mapbox-gl'); var mapRef = 'mapRef'; import { AppRegistry, StyleSheet, Text, StatusBar, View } from 'react-native'; var MapExample = React.createClass({ mixins: [Mapbox.Mixin], getInitialState() { return { center: { latitude: 40.72052634, longitude: -73.97686958312988 }, zoom: 11, annotations: [{ coordinates: [40.72052634, -73.97686958312988], 'type': 'point', title: 'This is marker 1', subtitle: 'It has a rightCalloutAccessory too', rightCalloutAccessory: { url: 'https://cldup.com/9Lp0EaBw5s.png', height: 25, width: 25 }, annotationImage: { url: 'https://cldup.com/CnRLZem9k9.png', height: 25, width: 25 }, id: 'marker1' }, { coordinates: [40.714541341726175,-74.00579452514648], 'type': 'point', title: 'Important!', subtitle: 'Neat, this is a custom annotation image', annotationImage: { url: 'https://cldup.com/7NLZklp8zS.png', height: 25, width: 25 }, id: 'marker2' }, { 'coordinates': [[40.76572150042782,-73.99429321289062],[40.743485405490695, -74.00218963623047],[40.728266950429735,-74.00218963623047],[40.728266950429735,-73.99154663085938],[40.73633186448861,-73.98983001708984],[40.74465591168391,-73.98914337158203],[40.749337730454826,-73.9870834350586]], 'type': 'polyline', 'strokeColor': '#00FB00', 'strokeWidth': 4, 'strokeAlpha': .5, 'id': 'foobar' }, { 'coordinates': [[40.749857912194386, -73.96820068359375], [40.741924698522055,-73.9735221862793], [40.735681504432264,-73.97523880004883], [40.7315190495212,-73.97438049316406], [40.729177554196376,-73.97180557250975], [40.72345355209305,-73.97438049316406], [40.719290332250544,-73.97455215454102], [40.71369559554873,-73.97729873657227], [40.71200407096382,-73.97850036621094], [40.71031250340588,-73.98691177368163], [40.71031250340588,-73.99154663085938]], 'type': 'polygon', 'fillAlpha':1, 'strokeColor': '#fffff', 'fillColor': 'blue', 'id': 'zap' }] }; }, onRegionChange(location) { this.setState({ currentZoom: location.zoom }); }, onRegionWillChange(location) { console.log(location); }, onUpdateUserLocation(location) { console.log(location); }, onOpenAnnotation(annotation) { console.log(annotation); }, onRightAnnotationTapped(e) { console.log(e); }, onLongPress(location) { console.log('long pressed', location); }, onTap(location) { console.log('tapped', location); }, onOfflineProgressDidChange(progress) { console.log(progress); }, onOfflineMaxAllowedMapboxTiles(hitLimit) { console.log(hitLimit); }, render() { StatusBar.setHidden(true); return ( this.setDirectionAnimated(mapRef, 0)}> Set direction to 0 this.setZoomLevelAnimated(mapRef, 6)}> Zoom out to zoom level 6 this.setCenterCoordinateAnimated(mapRef, 48.8589, 2.3447)}> Go to Paris at current zoom level {parseInt(this.state.currentZoom)} this.setCenterCoordinateZoomLevelAnimated(mapRef, 35.68829, 139.77492, 14)}> Go to Tokyo at fixed zoom level 14 this.addAnnotations(mapRef, [{ coordinates: [40.73312,-73.989], type: 'point', title: 'This is a new marker', id: 'foo' }, { 'coordinates': [[40.749857912194386, -73.96820068359375], [40.741924698522055,-73.9735221862793], [40.735681504432264,-73.97523880004883], [40.7315190495212,-73.97438049316406], [40.729177554196376,-73.97180557250975], [40.72345355209305,-73.97438049316406], [40.719290332250544,-73.97455215454102], [40.71369559554873,-73.97729873657227], [40.71200407096382,-73.97850036621094], [40.71031250340588,-73.98691177368163], [40.71031250340588,-73.99154663085938]], 'type': 'polygon', 'fillAlpha': 1, 'fillColor': '#000', 'strokeAlpha': 1, 'id': 'new-black-polygon' }])}> Add new marker this.updateAnnotation(mapRef, { coordinates: [40.714541341726175,-74.00579452514648], 'type': 'point', title: 'New Title!', subtitle: 'New Subtitle', annotationImage: { url: 'https://cldup.com/7NLZklp8zS.png', height: 25, width: 25 }, id: 'marker2' })}> Update marker2 this.selectAnnotationAnimated(mapRef, 'marker1')}> Open marker1 popup this.removeAnnotation(mapRef, 'marker2')}> Remove marker2 annotation this.removeAllAnnotations(mapRef)}> Remove all annotations this.setVisibleCoordinateBoundsAnimated(mapRef, 40.712, -74.227, 40.774, -74.125, 100, 0, 0, 0)}> Set visible bounds to 40.7, -74.2, 40.7, -74.1 this.setUserTrackingMode(mapRef, this.userTrackingMode.follow)}> Set userTrackingMode to follow this.getCenterCoordinateZoomLevel(mapRef, (location)=> { console.log(location); })}> Get location this.getDirection(mapRef, (direction)=> { console.log(direction); })}> Get direction this.getBounds(mapRef, (bounds)=> { console.log(bounds); })}> Get bounds this.addPackForRegion(mapRef, { name: 'test', type: 'bbox', bounds: [0, 0, 0, 0], minZoomLevel: 0, maxZoomLevel: 0, metadata: {}, styleURL: this.mapStyles.emerald })}> Create offline pack this.getPacks(mapRef, (err, packs)=> { if (err) console.log(err); console.log(packs); })}> Get offline packs this.removePack(mapRef, 'test', (err, info)=> { if (err) console.log(err); if (info) { console.log('Deleted', info.deleted); } else { console.log('No packs to delete'); } })}> Remove pack with name 'test' ); } }); var styles = StyleSheet.create({ container: { flex: 1 } }); AppRegistry.registerComponent('your-app-name', () => MapExample);