SlideShare a Scribd company logo
Kobkrit Viriyayudhakorn, Ph.D.
CEO of iApp Technology Limited.
kobkrit@gmail.com
http://www.kobkrit.com
Thai Travel Directory App
React-Native-Maps
• https://github.com/airbnb/react-
native-maps
• React Native Map Components
for iOS + Android
• Made by Airbnb
• iOS => Choose either
• Google Map
• Apple Map
• Android => Only Google Map
Installation
1. $ react-native init --version=“0.35.0” l9_map
2. $ npm install react-native-maps --save
3. $ react-native link
4. Write some code
5. $ react-native run-ios
6. For Android, we have extra steps.
Android Installation Extra
Steps.
1. Google Map need an API key
2. You can get your own at https://
console.developers.google.com or using my API
key. >> 

AIzaSyCKspSGmpYn3GxZfIc_Sccu7x-8qXQcZkI
3. Add the Google Map’s API key at
androidappsrcmainAndroidManifest.xml
4. $ react-native run-android
Adding Google API key
Add meta-data tag as shown below, between <application>
tag in AndroidManifest.xml
Adding Basic Map Code
l9_map_1
You can see full l9_map_1 source code at the end of lecture note (A4)
First try!
1. $ react-native run-ios
2. Empty screen come up!?
why!?
3. Map need the width,
height. Can not use flex:1
here… :(
l9_map_1
Adding Width,Height to Map
l9_map_2Full l9_map_2 source code at the end of lecture note
• Dimensions return current screen’s 

width and height.
• Dimensions.get(‘windows’).width
• Dimensions.get(‘windows’).height
• Thus, the map will be full screen.
1. Welcome to San Francisco, the
home of tech companies in the world.
2. At the center point of the screen is
<37.78825, -122.4324>
3. The zoom of the map is specify by
*Delta.
4. At the Equator

1 LatitudeDelta => 110.57 KM

1 LongitudeDelta => 111.32 KM
0.0922 latDelta
0.0421 longDelta
(37.78825, -122.4324)
l9_map_2
Make it controllable by State
l9_map_3
Instead of, the fixed regions, we make it as a state.
Make it controllable by State #2
l9_map_3
• onRegionChange props will be called when the location/zoom
are changed, with the value of new location/zoom (region)
• Region props defined the current location/zoom in the map.
1. Drag on map view to move
the map.
2. Once drag, this.state.region
was updated by
onRegionChanged().
3. Text at the lower third of the
screen is updated according
to the this.state.region
4.Try two fingers pinch, to
zoom, to rotate the map. In
simulator, press alt(option)
button to two fingers pinch.
l9_map_3
Configure the MapView
And much more..
https://github.com/airbnb/react-native-maps/blob/master/docs/mapview.md
MapEvents are also catchable
And much more..
https://github.com/airbnb/react-native-maps/blob/master/docs/mapview.md
Let configure some MapView
l9_map_4
Let’s change the mapType
mapType=“hybrid” mapType=“satellite” mapType=“terrain”
l9_map_4
Android only
Adding Map Markerl9_map_5
Let move the location to the Victory
Monument, Bangkok, Thailand.
MapView.Marker
coordinate => LatLng Object of that
marker
title => Title of Information popup

description => Description of popup
1. MapView.Marker creates a red-
pin marker on the map (for Apple
map), and droplet shape pin on
Google map. Place it as children
of the MapView.
2.Touch the pin to show up the
popup windows, touch elsewhere
to hide it.
3. The map is draggable.
4.You can add many markers you
want.
Google Map
Apple Map l9_map_5
Add More Markers!
l9_map_6
l9_map_6
Don’t forget to add “key”
We found that there are warnings below…
It will occur every time, when we use JSX under loop.

To remove it, Add key props. 

To distinguish each MapView.Marker

from others.
l9_map_6
Adding custom images to
markers
images/shopping.png images/music.png images/attention.png
W=56px / H=56px / Transparent Background
l9_map_7
Adding custom images to
markers l9_map_7
• Load image into state,
and display it on map
using “image” prop.
• Image shall be around

56px X 56px
l9_map_7
Nah,.. Change my mind

I want custom view to represent

markers instead… l9_map_8
Place Name
Normal Picture Group of View
Marker as Custom View
• Add View as the children of MapView.Marker
l9_map_8
l9_map_8
That such a boring 

Popup… I want to have 

a photo in it. (Custom Popup)
l9_map_9
Custom Popup
• Add MapView.Callout as the children of the MapView.Marker
l9_map_9
l9_map_9
Drawing Circle on Map
…
https://github.com/airbnb/react-native-maps/blob/master/docs/circle.md l9_map_10
Drawing Polyline on Map
…
https://github.com/airbnb/react-native-maps/blob/master/docs/polyline.md l9_map_10
Drawing Polygon on Map
…
https://github.com/airbnb/react-native-maps/blob/master/docs/polygon.md l9_map_10
Drawing Something on Map
(Code) l9_map_10
[React-Native Tutorial] Map
Travel Directory App
• Center map at the Victory
Monument
• Map can be moved.
• Tap on icon, show Title and
Description
• Push buttons to move the map
to that specific location and
zoom in and open the call out.
• Starting to modify the app from
l9_map_7
App Requirements
l9_map_travel
moveMapToLocation method
Once called,
moveMaptoLocation
method change the
state of region to
assigned latlng, and
zoom in by setting

latitudeDelta, and
longitudeDelta
l9_map_travel
Location Button Component
l9_map_travel_locationButton
Tap!
l9_map_travel
Tap!
l9_map_travel
Tap!
l9_map_travel
Tap!
l9_map_travel
The Change is so sudden!
• I want to make it smoothly animate to the new location!
• MapView have a method for that called “animateToRegion”
• They accept 2 arguments, i.e., Region to move to, and, How long
does the animation will need (in ms).
l9_map_travel_smooth
How to reference to the
MapView (Ref)
• How we can reference to our UI in react?
• Luckily, we have Ref System!
• We can have ref props in any component, e.g., 

<MapView ref=“map” … >
• We can reference to the MapView Component by
accessing this.ref.map
l9_map_travel_smooth
l9_map_travel_smooth
• We move to the new location as specified in latlng.
• And zoom in,
• smoothly in 3 seconds (3000 ms)
Smoothly Move Map

Demo
l9_map_travel_smooth
HW: How to automatically open
call out when pressing a button?
• There is a method call “showCallout()” in MapView.Marker
• Use Ref!
• This is your homework!
https://github.com/airbnb/react-native-maps/blob/master/docs/marker.md
Q/A

More Related Content

PDF
Virtual Techniques in the field of Automotive Engineering: VDC-Whitepaper
PDF
창의적사고법 소개강의
PDF
Ubiquitous interactions
PDF
Simulation of eight wheeled rocker bogie suspension system using
DOCX
Minor project thesis OF ROCKER BOGIE MACHANISM
PPTX
Development of Automated Guided Vehicle (AGV)
PPTX
Introduction to Progressive Web App
PDF
React native - What, Why, How?
Virtual Techniques in the field of Automotive Engineering: VDC-Whitepaper
창의적사고법 소개강의
Ubiquitous interactions
Simulation of eight wheeled rocker bogie suspension system using
Minor project thesis OF ROCKER BOGIE MACHANISM
Development of Automated Guided Vehicle (AGV)
Introduction to Progressive Web App
React native - What, Why, How?

Similar to [React-Native Tutorial] Map (20)

PPT
Performance and Scalability for Maps API Sites (Dev Fest '10 Mexico)
KEY
SmartphoneKanto#10
PPTX
How to build a Pokemon Go App
PDF
Maperitive
PDF
@Ionic native/google-maps
PDF
GIS - google earth -placemark - image overlay - screen overlay
PDF
CKEditor Widgets with Drupal
PPTX
Android MapView and MapActivity
PDF
Intro To Google Maps
PDF
Global mapperhelp
PDF
Maps API on_mobile_dev_festbangkok
PPT
Petec Google Earth
PDF
Create Location Sharing apps using the Ionic framework
PPTX
Android chapter25-map views
PPTX
Android development session 6 - Google Maps v2
PDF
Map view
PDF
Easily Create Maps in Drupal with Leaflet
PDF
Processing 2.0 + Open Data
PPTX
Understanding memory management in xamarin forms
Performance and Scalability for Maps API Sites (Dev Fest '10 Mexico)
SmartphoneKanto#10
How to build a Pokemon Go App
Maperitive
@Ionic native/google-maps
GIS - google earth -placemark - image overlay - screen overlay
CKEditor Widgets with Drupal
Android MapView and MapActivity
Intro To Google Maps
Global mapperhelp
Maps API on_mobile_dev_festbangkok
Petec Google Earth
Create Location Sharing apps using the Ionic framework
Android chapter25-map views
Android development session 6 - Google Maps v2
Map view
Easily Create Maps in Drupal with Leaflet
Processing 2.0 + Open Data
Understanding memory management in xamarin forms
Ad

More from Kobkrit Viriyayudhakorn (20)

PDF
Thai E-Voting System
PPTX
Thai National ID Card OCR
PPTX
Chochae Robot - Thai voice communication extension pack for Service Robot
PDF
ศักยภาพของ AI สู่โอกาสใหม่แห่งการแข่งขันและความสำเร็จ (Thai AI updates in yea...
PDF
Thai Text processing by Transfer Learning using Transformer (Bert)
PDF
How Emoticon Affects Chatbot Users
PPTX
หัวใจของปัญญาประดิษฐ์ (Gradient Descent ทำงานอย่างไร)
PDF
Check Raka Chatbot Pitching Presentation
PPTX
[Lecture 3] AI and Deep Learning: Logistic Regression (Coding)
PPTX
[Lecture 4] AI and Deep Learning: Neural Network (Theory)
PPTX
[Lecture 2] AI and Deep Learning: Logistic Regression (Theory)
PDF
ITS488 Lecture 6: Music and Sound Effect & GVR Try out.
PDF
Lecture 12: React-Native Firebase Authentication
PDF
Unity Google VR Cardboard Deployment on iOS and Android
PDF
ITS488 Lecture 4: Google VR Cardboard Game Development: Basket Ball Game #2
PDF
Lecture 4: ITS488 Digital Content Creation with Unity - Game and VR Programming
PDF
Lecture 2: C# Programming for VR application in Unity
PDF
Lecture 1 Introduction to VR Programming
PDF
Thai Word Embedding with Tensorflow
PDF
Lecture 3 - ES6 Script Advanced for React-Native
Thai E-Voting System
Thai National ID Card OCR
Chochae Robot - Thai voice communication extension pack for Service Robot
ศักยภาพของ AI สู่โอกาสใหม่แห่งการแข่งขันและความสำเร็จ (Thai AI updates in yea...
Thai Text processing by Transfer Learning using Transformer (Bert)
How Emoticon Affects Chatbot Users
หัวใจของปัญญาประดิษฐ์ (Gradient Descent ทำงานอย่างไร)
Check Raka Chatbot Pitching Presentation
[Lecture 3] AI and Deep Learning: Logistic Regression (Coding)
[Lecture 4] AI and Deep Learning: Neural Network (Theory)
[Lecture 2] AI and Deep Learning: Logistic Regression (Theory)
ITS488 Lecture 6: Music and Sound Effect & GVR Try out.
Lecture 12: React-Native Firebase Authentication
Unity Google VR Cardboard Deployment on iOS and Android
ITS488 Lecture 4: Google VR Cardboard Game Development: Basket Ball Game #2
Lecture 4: ITS488 Digital Content Creation with Unity - Game and VR Programming
Lecture 2: C# Programming for VR application in Unity
Lecture 1 Introduction to VR Programming
Thai Word Embedding with Tensorflow
Lecture 3 - ES6 Script Advanced for React-Native
Ad

Recently uploaded (20)

PDF
Spectral efficient network and resource selection model in 5G networks
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
NewMind AI Monthly Chronicles - July 2025
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
cuic standard and advanced reporting.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
Cloud computing and distributed systems.
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PPT
Teaching material agriculture food technology
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Spectral efficient network and resource selection model in 5G networks
“AI and Expert System Decision Support & Business Intelligence Systems”
Dropbox Q2 2025 Financial Results & Investor Presentation
NewMind AI Monthly Chronicles - July 2025
The AUB Centre for AI in Media Proposal.docx
Understanding_Digital_Forensics_Presentation.pptx
cuic standard and advanced reporting.pdf
Review of recent advances in non-invasive hemoglobin estimation
Cloud computing and distributed systems.
Mobile App Security Testing_ A Comprehensive Guide.pdf
Unlocking AI with Model Context Protocol (MCP)
Teaching material agriculture food technology
Reach Out and Touch Someone: Haptics and Empathic Computing
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
NewMind AI Weekly Chronicles - August'25 Week I
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Chapter 3 Spatial Domain Image Processing.pdf
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...

[React-Native Tutorial] Map

  • 1. Kobkrit Viriyayudhakorn, Ph.D. CEO of iApp Technology Limited. kobkrit@gmail.com http://www.kobkrit.com
  • 3. React-Native-Maps • https://github.com/airbnb/react- native-maps • React Native Map Components for iOS + Android • Made by Airbnb • iOS => Choose either • Google Map • Apple Map • Android => Only Google Map
  • 4. Installation 1. $ react-native init --version=“0.35.0” l9_map 2. $ npm install react-native-maps --save 3. $ react-native link 4. Write some code 5. $ react-native run-ios 6. For Android, we have extra steps.
  • 5. Android Installation Extra Steps. 1. Google Map need an API key 2. You can get your own at https:// console.developers.google.com or using my API key. >> 
 AIzaSyCKspSGmpYn3GxZfIc_Sccu7x-8qXQcZkI 3. Add the Google Map’s API key at androidappsrcmainAndroidManifest.xml 4. $ react-native run-android
  • 6. Adding Google API key Add meta-data tag as shown below, between <application> tag in AndroidManifest.xml
  • 7. Adding Basic Map Code l9_map_1 You can see full l9_map_1 source code at the end of lecture note (A4)
  • 8. First try! 1. $ react-native run-ios 2. Empty screen come up!? why!? 3. Map need the width, height. Can not use flex:1 here… :( l9_map_1
  • 9. Adding Width,Height to Map l9_map_2Full l9_map_2 source code at the end of lecture note • Dimensions return current screen’s 
 width and height. • Dimensions.get(‘windows’).width • Dimensions.get(‘windows’).height • Thus, the map will be full screen.
  • 10. 1. Welcome to San Francisco, the home of tech companies in the world. 2. At the center point of the screen is <37.78825, -122.4324> 3. The zoom of the map is specify by *Delta. 4. At the Equator
 1 LatitudeDelta => 110.57 KM
 1 LongitudeDelta => 111.32 KM 0.0922 latDelta 0.0421 longDelta (37.78825, -122.4324) l9_map_2
  • 11. Make it controllable by State l9_map_3 Instead of, the fixed regions, we make it as a state.
  • 12. Make it controllable by State #2 l9_map_3 • onRegionChange props will be called when the location/zoom are changed, with the value of new location/zoom (region) • Region props defined the current location/zoom in the map.
  • 13. 1. Drag on map view to move the map. 2. Once drag, this.state.region was updated by onRegionChanged(). 3. Text at the lower third of the screen is updated according to the this.state.region 4.Try two fingers pinch, to zoom, to rotate the map. In simulator, press alt(option) button to two fingers pinch. l9_map_3
  • 14. Configure the MapView And much more.. https://github.com/airbnb/react-native-maps/blob/master/docs/mapview.md
  • 15. MapEvents are also catchable And much more.. https://github.com/airbnb/react-native-maps/blob/master/docs/mapview.md
  • 16. Let configure some MapView l9_map_4
  • 17. Let’s change the mapType mapType=“hybrid” mapType=“satellite” mapType=“terrain” l9_map_4 Android only
  • 18. Adding Map Markerl9_map_5 Let move the location to the Victory Monument, Bangkok, Thailand. MapView.Marker coordinate => LatLng Object of that marker title => Title of Information popup
 description => Description of popup
  • 19. 1. MapView.Marker creates a red- pin marker on the map (for Apple map), and droplet shape pin on Google map. Place it as children of the MapView. 2.Touch the pin to show up the popup windows, touch elsewhere to hide it. 3. The map is draggable. 4.You can add many markers you want. Google Map Apple Map l9_map_5
  • 22. Don’t forget to add “key” We found that there are warnings below… It will occur every time, when we use JSX under loop.
 To remove it, Add key props. 
 To distinguish each MapView.Marker
 from others. l9_map_6
  • 23. Adding custom images to markers images/shopping.png images/music.png images/attention.png W=56px / H=56px / Transparent Background l9_map_7
  • 24. Adding custom images to markers l9_map_7 • Load image into state, and display it on map using “image” prop. • Image shall be around
 56px X 56px
  • 26. Nah,.. Change my mind
 I want custom view to represent
 markers instead… l9_map_8 Place Name Normal Picture Group of View
  • 27. Marker as Custom View • Add View as the children of MapView.Marker l9_map_8
  • 29. That such a boring 
 Popup… I want to have 
 a photo in it. (Custom Popup) l9_map_9
  • 30. Custom Popup • Add MapView.Callout as the children of the MapView.Marker l9_map_9
  • 32. Drawing Circle on Map … https://github.com/airbnb/react-native-maps/blob/master/docs/circle.md l9_map_10
  • 33. Drawing Polyline on Map … https://github.com/airbnb/react-native-maps/blob/master/docs/polyline.md l9_map_10
  • 34. Drawing Polygon on Map … https://github.com/airbnb/react-native-maps/blob/master/docs/polygon.md l9_map_10
  • 35. Drawing Something on Map (Code) l9_map_10
  • 37. Travel Directory App • Center map at the Victory Monument • Map can be moved. • Tap on icon, show Title and Description • Push buttons to move the map to that specific location and zoom in and open the call out. • Starting to modify the app from l9_map_7 App Requirements l9_map_travel
  • 38. moveMapToLocation method Once called, moveMaptoLocation method change the state of region to assigned latlng, and zoom in by setting
 latitudeDelta, and longitudeDelta l9_map_travel
  • 44. The Change is so sudden! • I want to make it smoothly animate to the new location! • MapView have a method for that called “animateToRegion” • They accept 2 arguments, i.e., Region to move to, and, How long does the animation will need (in ms). l9_map_travel_smooth
  • 45. How to reference to the MapView (Ref) • How we can reference to our UI in react? • Luckily, we have Ref System! • We can have ref props in any component, e.g., 
 <MapView ref=“map” … > • We can reference to the MapView Component by accessing this.ref.map l9_map_travel_smooth
  • 46. l9_map_travel_smooth • We move to the new location as specified in latlng. • And zoom in, • smoothly in 3 seconds (3000 ms)
  • 48. HW: How to automatically open call out when pressing a button? • There is a method call “showCallout()” in MapView.Marker • Use Ref! • This is your homework! https://github.com/airbnb/react-native-maps/blob/master/docs/marker.md
  • 49. Q/A