diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml
index 3c741e444..bc65df522 100644
--- a/.github/dependabot.yaml
+++ b/.github/dependabot.yaml
@@ -133,6 +133,10 @@ updates:
directory: "game_template/"
schedule:
interval: "daily"
+ - package-ecosystem: "pub"
+ directory: "google_maps/"
+ schedule:
+ interval: "daily"
- package-ecosystem: "pub"
directory: "infinite_list/"
schedule:
diff --git a/google_maps/analysis_options.yaml b/google_maps/analysis_options.yaml
new file mode 100644
index 000000000..eb3cb890b
--- /dev/null
+++ b/google_maps/analysis_options.yaml
@@ -0,0 +1,5 @@
+include: package:analysis_defaults/flutter.yaml
+
+analyzer:
+ exclude:
+ - lib/src/*.g.dart
diff --git a/google_maps/android/.gitignore b/google_maps/android/.gitignore
new file mode 100644
index 000000000..6f568019d
--- /dev/null
+++ b/google_maps/android/.gitignore
@@ -0,0 +1,13 @@
+gradle-wrapper.jar
+/.gradle
+/captures/
+/gradlew
+/gradlew.bat
+/local.properties
+GeneratedPluginRegistrant.java
+
+# Remember to never publicly share your keystore.
+# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
+key.properties
+**/*.keystore
+**/*.jks
diff --git a/google_maps/android/app/build.gradle b/google_maps/android/app/build.gradle
new file mode 100644
index 000000000..152d86056
--- /dev/null
+++ b/google_maps/android/app/build.gradle
@@ -0,0 +1,69 @@
+def localProperties = new Properties()
+def localPropertiesFile = rootProject.file('local.properties')
+if (localPropertiesFile.exists()) {
+ localPropertiesFile.withReader('UTF-8') { reader ->
+ localProperties.load(reader)
+ }
+}
+
+def flutterRoot = localProperties.getProperty('flutter.sdk')
+if (flutterRoot == null) {
+ throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
+}
+
+def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
+if (flutterVersionCode == null) {
+ flutterVersionCode = '1'
+}
+
+def flutterVersionName = localProperties.getProperty('flutter.versionName')
+if (flutterVersionName == null) {
+ flutterVersionName = '1.0'
+}
+
+apply plugin: 'com.android.application'
+apply plugin: 'kotlin-android'
+apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
+
+android {
+ compileSdkVersion flutter.compileSdkVersion
+ ndkVersion flutter.ndkVersion
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ kotlinOptions {
+ jvmTarget = '1.8'
+ }
+
+ sourceSets {
+ main.java.srcDirs += 'src/main/kotlin'
+ }
+
+ defaultConfig {
+ // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
+ applicationId "com.example.google_maps_in_flutter"
+ minSdkVersion 20
+ targetSdkVersion flutter.targetSdkVersion
+ versionCode flutterVersionCode.toInteger()
+ versionName flutterVersionName
+ }
+
+ buildTypes {
+ release {
+ // TODO: Add your own signing config for the release build.
+ // Signing with the debug keys for now, so `flutter run --release` works.
+ signingConfig signingConfigs.debug
+ }
+ }
+}
+
+flutter {
+ source '../..'
+}
+
+dependencies {
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+}
diff --git a/google_maps/android/app/src/debug/AndroidManifest.xml b/google_maps/android/app/src/debug/AndroidManifest.xml
new file mode 100644
index 000000000..9ae2de283
--- /dev/null
+++ b/google_maps/android/app/src/debug/AndroidManifest.xml
@@ -0,0 +1,8 @@
+
+
+
+
diff --git a/google_maps/android/app/src/main/AndroidManifest.xml b/google_maps/android/app/src/main/AndroidManifest.xml
new file mode 100644
index 000000000..921734610
--- /dev/null
+++ b/google_maps/android/app/src/main/AndroidManifest.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/google_maps/android/app/src/main/kotlin/com/example/google_maps_in_flutter/MainActivity.kt b/google_maps/android/app/src/main/kotlin/com/example/google_maps_in_flutter/MainActivity.kt
new file mode 100644
index 000000000..883dae8a4
--- /dev/null
+++ b/google_maps/android/app/src/main/kotlin/com/example/google_maps_in_flutter/MainActivity.kt
@@ -0,0 +1,6 @@
+package com.example.google_maps_in_flutter
+
+import io.flutter.embedding.android.FlutterActivity
+
+class MainActivity: FlutterActivity() {
+}
diff --git a/google_maps/android/app/src/main/res/drawable-v21/launch_background.xml b/google_maps/android/app/src/main/res/drawable-v21/launch_background.xml
new file mode 100644
index 000000000..f74085f3f
--- /dev/null
+++ b/google_maps/android/app/src/main/res/drawable-v21/launch_background.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
diff --git a/google_maps/android/app/src/main/res/drawable/launch_background.xml b/google_maps/android/app/src/main/res/drawable/launch_background.xml
new file mode 100644
index 000000000..304732f88
--- /dev/null
+++ b/google_maps/android/app/src/main/res/drawable/launch_background.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
diff --git a/google_maps/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/google_maps/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 000000000..db77bb4b7
Binary files /dev/null and b/google_maps/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/google_maps/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/google_maps/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 000000000..17987b79b
Binary files /dev/null and b/google_maps/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/google_maps/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/google_maps/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 000000000..09d439148
Binary files /dev/null and b/google_maps/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/google_maps/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/google_maps/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 000000000..d5f1c8d34
Binary files /dev/null and b/google_maps/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/google_maps/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/google_maps/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 000000000..4d6372eeb
Binary files /dev/null and b/google_maps/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/google_maps/android/app/src/main/res/values-night/styles.xml b/google_maps/android/app/src/main/res/values-night/styles.xml
new file mode 100644
index 000000000..06952be74
--- /dev/null
+++ b/google_maps/android/app/src/main/res/values-night/styles.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
diff --git a/google_maps/android/app/src/main/res/values/styles.xml b/google_maps/android/app/src/main/res/values/styles.xml
new file mode 100644
index 000000000..cb1ef8805
--- /dev/null
+++ b/google_maps/android/app/src/main/res/values/styles.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
diff --git a/google_maps/android/app/src/profile/AndroidManifest.xml b/google_maps/android/app/src/profile/AndroidManifest.xml
new file mode 100644
index 000000000..9ae2de283
--- /dev/null
+++ b/google_maps/android/app/src/profile/AndroidManifest.xml
@@ -0,0 +1,8 @@
+
+
+
+
diff --git a/google_maps/android/build.gradle b/google_maps/android/build.gradle
new file mode 100644
index 000000000..83ae22004
--- /dev/null
+++ b/google_maps/android/build.gradle
@@ -0,0 +1,31 @@
+buildscript {
+ ext.kotlin_version = '1.6.10'
+ repositories {
+ google()
+ mavenCentral()
+ }
+
+ dependencies {
+ classpath 'com.android.tools.build:gradle:7.1.2'
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ }
+}
+
+rootProject.buildDir = '../build'
+subprojects {
+ project.buildDir = "${rootProject.buildDir}/${project.name}"
+}
+subprojects {
+ project.evaluationDependsOn(':app')
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
diff --git a/google_maps/android/gradle.properties b/google_maps/android/gradle.properties
new file mode 100644
index 000000000..94adc3a3f
--- /dev/null
+++ b/google_maps/android/gradle.properties
@@ -0,0 +1,3 @@
+org.gradle.jvmargs=-Xmx1536M
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/google_maps/android/gradle/wrapper/gradle-wrapper.properties b/google_maps/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 000000000..cb24abda1
--- /dev/null
+++ b/google_maps/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
diff --git a/google_maps/android/settings.gradle b/google_maps/android/settings.gradle
new file mode 100644
index 000000000..44e62bcf0
--- /dev/null
+++ b/google_maps/android/settings.gradle
@@ -0,0 +1,11 @@
+include ':app'
+
+def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
+def properties = new Properties()
+
+assert localPropertiesFile.exists()
+localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
+
+def flutterSdkPath = properties.getProperty("flutter.sdk")
+assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
+apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
diff --git a/google_maps/assets/locations.json b/google_maps/assets/locations.json
new file mode 100644
index 000000000..83aae6435
--- /dev/null
+++ b/google_maps/assets/locations.json
@@ -0,0 +1,901 @@
+{
+ "offices": [
+ {
+ "address": "Aabogade 15\n8200 Aarhus\nDenmark",
+ "id": "aarhus",
+ "image": "https://lh3.googleusercontent.com/tpBMFN5os8K-qXIHiAX5SZEmN5fCzIGrj9FdJtbZPUkC91ookSoY520NYn7fK5yqmh1L1m3F2SJA58v6Qps3JusdrxoFSwk6Ajv2K88",
+ "lat": 56.172249,
+ "lng": 10.187372,
+ "name": "Aarhus",
+ "phone": "",
+ "region": "europe"
+ },
+ {
+ "address": "Claude Debussylaan 34\n1082 MD, Amsterdam\nNetherlands",
+ "id": "amsterdam",
+ "image": "https://lh3.googleusercontent.com/gG1zKXcSmRyYWHwUn2Z0MITpdqwb52RAEp3uthG2J5Xl-4_Wz7_WmoM6T_TBg6Ut3L1eF-8XENO10sxVIFdQHilj8iRG29wROpSoug",
+ "lat": 52.337801,
+ "lng": 4.872066,
+ "name": "Amsterdam",
+ "phone": "",
+ "region": "europe"
+ },
+ {
+ "address": "2300 Traverwood Dr.\nAnn Arbor, MI 48105\nUnited States",
+ "id": "ann-arbor",
+ "image": "https://lh3.googleusercontent.com/Iim0OVcAgg9vmXc5ADn9KvOQFplrMZ8hBTg2biiTtuWPy_r56cy4Byx1ROk6coGt7knQdmx_jO45VX1kiCJZ0QzEtS97AP_BYG4F2w",
+ "lat": 42.3063848,
+ "lng": -83.7140833,
+ "name": "Ann Arbor",
+ "phone": "+1 734-332-6500",
+ "region": "north-america"
+ },
+ {
+ "address": "Fragkokklisias 7\nAthens 151 25\nGreece",
+ "id": "athens",
+ "image": "https://lh3.googleusercontent.com/XroZnqewSrO6KuvXM5hDHtjUJzUcRQLZYfCKs4jP44dKezRvNx58uxaqUKS4fQ2eXzG2TpJNJ1X2xtfBe7Prl5hSG_xjPEF1xLtFodM",
+ "lat": 38.03902,
+ "lng": 23.804595,
+ "name": "Athens",
+ "phone": "",
+ "region": "europe"
+ },
+ {
+ "address": "10 10th Street NE\nAtlanta, GA 30309\nUnited States",
+ "id": "atlanta",
+ "image": "https://lh3.googleusercontent.com/py7Qvqqoec1MB0dMKnGWn7ju9wET_dIneTb24U-ri8XAsECJnOaBoNmvfa51PIaC0rlsyQvQXvAK8RdLqpkhpkRSzmhNKqb-tY2_",
+ "lat": 33.781827,
+ "lng": -84.387301,
+ "name": "Atlanta",
+ "phone": "+1 404-487-9000",
+ "region": "north-america"
+ },
+ {
+ "address": "500 W 2nd St\nSuite 2900\nAustin, TX 78701\nUnited States",
+ "id": "austin",
+ "image": "https://lh3.googleusercontent.com/WFaJgWPdd7xPL7CQHizlqEzLDjT_GUAiWHIWUM0PiVSsv8q3Rjt9QgbyQazuQwYfN5qLORajv8eKSHlKwZo-M89T2Y12zFSxSIme08c",
+ "lat": 30.266035,
+ "lng": -97.749237,
+ "name": "Austin",
+ "phone": "+1 512-343-5283",
+ "region": "north-america"
+ },
+ {
+ "address": "No. 3, RMZ Infinity \u2013 Tower E\nOld Madras Road\n4th and 5th Floors\nBangalore, 560 016, India",
+ "id": "bangalore",
+ "image": "https://lh3.googleusercontent.com/YDyQevoY-D0eZQ9sYHp8dQjpFF5JpLfLK-0OM-uJK1oNK3_LRnGJAM0uXi9qb9UigKnVIIXlIgidxhRlnaB_FPtUOqPzrsCSiFZyoQ",
+ "lat": 12.99332,
+ "lng": 77.660176,
+ "name": "Bangalore",
+ "phone": "+91-80-67218000",
+ "region": "asia-pacific"
+ },
+ {
+ "address": "57 Park Ventures Ecoplex\n14th Floor, Wireless Road\nBangkok, 10330, Thailand",
+ "id": "bangkok",
+ "image": "https://lh3.googleusercontent.com/nh9uOUPj6iWjKZSHIrnkfGhIWGBb8thguRM5_ehCOkyF-qfwzYciDJFVRSvQ6QxlSA6eZUMkzgdW9zR0Gab2ZZPg8NlB7V_V3wB5",
+ "lat": 13.742866,
+ "lng": 100.547983,
+ "name": "Bangkok",
+ "phone": "",
+ "region": "asia-pacific"
+ },
+ {
+ "address": "6th Floor, Tower B, Raycom InfoTech Park\nNo. 2 Kexueyuan South Road\nZhongguancun Beijing 100190",
+ "id": "beijing",
+ "image": "https://lh3.googleusercontent.com/v_tD3VvC8-dnhqSF9xhj5Hx7F_bb3-wieM19i-Ho2C3by6mt7-JpPc7KsYVHUZFqQl5ON3adVEV1N4OlzSvHLrr3sr4GtXErDbGC",
+ "lat": 39.9848878,
+ "lng": 116.3265708,
+ "name": "Beijing",
+ "phone": "+86-10-62503000",
+ "region": "asia-pacific"
+ },
+ {
+ "address": "Boulevard Corporate Tower\nAv. dos Andradas, 3000 - Andares 14-17\nSanta Efig\u00eania\nBelo Horizonte\n30260-070, Brazil",
+ "id": "belo-horizonte",
+ "image": "https://lh3.googleusercontent.com/f7F8gTi9GSgAZR3lv24I1yb-D0wRlDy0lQTcxCB4yJGtSgxrWdKoB3dX3J8SMrjYLwOSXquO3LuGFUE82QUjzVK9buHGNIRUPGpqM3E",
+ "lat": -19.920225,
+ "lng": -43.920845,
+ "name": "Belo Horizonte",
+ "phone": "+55-31-2128-6800",
+ "region": "latin-america"
+ },
+ {
+ "address": "Tucholskystra\u00dfe 2\n10117 Berlin\nGermany",
+ "id": "berlin",
+ "image": "https://lh3.googleusercontent.com/XcPyEMiSlLdZJq7nh3orGy3UqjtUHdhxXiwn52ZY47wfEChfZNDO78zDy9H0tBeegogZBZpIE0Q9mdVBGN4aQ0M5vfgz8ZWMEe43Mg",
+ "lat": 52.5231079,
+ "lng": 13.39203120000002,
+ "name": "Berlin",
+ "phone": "+49 30 303986300",
+ "region": "europe"
+ },
+ {
+ "address": "Carrera 11A 94 - 45\nCentro Empresarial Oxo Centre\nBogota, Colombia",
+ "id": "bogota",
+ "image": "https://lh3.googleusercontent.com/_APoV1zAR0g5_pXVDlT2ovgNQfr3zvjOuj4HFHViiy2ahyjapJMXlYRE48qYMyFTWXJybbK4psz-fQ82QhMhO0keYJ27I8tNTHe_ww",
+ "lat": 4.678267,
+ "lng": -74.046901,
+ "name": "Bogota",
+ "phone": "+57 (1) 5939400",
+ "region": "latin-america"
+ },
+ {
+ "address": "2600 Pearl Street\nBoulder, CO 80302\nUnited States",
+ "id": "boulder",
+ "image": "https://lh3.googleusercontent.com/lF9KBhOolmb958FFmMdLwFcedQAn1wEsVleBRrJQmyfhvD3u4lwCneR09ADJ9sG4tMBP5LDSLkn9bkbavzyqqql_0X7hj39dzl-n1w",
+ "lat": 40.021693,
+ "lng": -105.260139,
+ "name": "Boulder",
+ "phone": "+1 303-245-0086",
+ "region": "north-america"
+ },
+ {
+ "address": "2930 Pearl St\nBoulder, CO 80301\nUnited States",
+ "id": "boulder-pearl",
+ "image": "https://lh3.googleusercontent.com/_JvBccdhLZSIxenZEubM2Qu8Eky6udmnwekH7BhjI1EUo8mCDXDHa0Z7mfNzvZtlmiXI6b6w8U-PY47oUQhPtvYazGS4mG8S61Rr",
+ "lat": 40.021948,
+ "lng": -105.253978,
+ "name": "Boulder \u2013 Pearl Place",
+ "phone": "+1 303-245-0086",
+ "region": "north-america"
+ },
+ {
+ "address": "3333 Walnut St\nBoulder CO, 80301\nUnited States",
+ "id": "boulder-walnut",
+ "image": "https://lh3.googleusercontent.com/nGvIFmh9d2J68l-U7gYdQAqLZkLNNS_pqhNMtGopMujEpZEneMSH75NFr1WmXJC0GafDLyTVSpnqbuj5Tfjjjk889Zk23dIggqNN",
+ "lat": 40.01993,
+ "lng": -105.24936,
+ "name": "Boulder \u2013 Walnut",
+ "phone": "+1 303-245-0086",
+ "region": "north-america"
+ },
+ {
+ "address": "Chaussee d'Etterbeek 180\n1040 Brussels\nBelgium",
+ "id": "brussels",
+ "image": "https://lh3.googleusercontent.com/Vdcj2ozYBIOyJLAhRyQic7xjw-OfQ_F5b8M9Kaom_56M2zp8UW65Lm1bYJLLEc4_U4tXfAp-CA81U2O2tdHcXPdsCEUO0hyK_SFKF-Y",
+ "lat": 50.839315,
+ "lng": 4.380984,
+ "name": "Brussels",
+ "phone": "",
+ "region": "europe"
+ },
+ {
+ "address": "Alicia M. De Justo 350, 2nd Floor\nBuenos Aires, C1107AAH\nArgentina",
+ "id": "buenos-aires",
+ "image": "https://lh3.googleusercontent.com/08n-ZBH23cWYWAbRo7_uZ6VObzDOLdfvxiAy4vZvX2I_FBn4vlUl_qiwALWBMUp7gQ4LEkj7aW6gB_jdJWNmnsmYEKbWzNsh0EaYpw",
+ "lat": -34.602734,
+ "lng": -58.366992,
+ "name": "Buenos Aires",
+ "phone": "+54-11-5530-3000",
+ "region": "latin-america"
+ },
+ {
+ "address": "355 Main Street\nCambridge, MA 02142\nUnited States",
+ "id": "cambridge",
+ "image": "https://lh3.googleusercontent.com/OLL4nJ-esDQ3JFh2XpWSpX8WnO69yzFpYPWIy9yL_2WFapf74z_ZYvfqb4XkF0_hT2rCi3pzN2Y-yglQ-jWMw3u89YKwn4GfdT7FfQ",
+ "lat": 42.362757,
+ "lng": -71.087109,
+ "name": "Cambridge",
+ "phone": "+1 617-575-1300",
+ "region": "north-america"
+ },
+ {
+ "address": "200 West Franklin Street\nChapel Hill, NC 27516\nUnited States",
+ "id": "chapel-hill",
+ "image": "https://lh3.googleusercontent.com/AHShjZrvscMoWixuAd0zIXqER2wKMXtoqX4edIzur3FRLJ3DBDIAQqD6PZqB4it_ApAVyitFkjsRPER38oX6XHYOl9mxKbLCXrAQKA",
+ "lat": 35.912445,
+ "lng": -79.058488,
+ "name": "Chapel Hill",
+ "phone": "",
+ "region": "north-america"
+ },
+ {
+ "address": "210 Carpenter Ave\nChicago, IL 60607\nUnited States",
+ "id": "chicago-carpenter",
+ "image": "https://lh3.googleusercontent.com/pgZ_JGnbpqS4P8H29c6hOCQcLXiG1EZEw5W92FKddWuUTW8618AwIho27aAFPmniDUpH_jS3mCpAx3nY6WkT46oetsFMC__SrPCUmw",
+ "lat": 41.88609,
+ "lng": -87.65333,
+ "name": "Chicago \u2013 Carpenter",
+ "phone": "",
+ "region": "north-america"
+ },
+ {
+ "address": "320 N. Morgan, Suite 600\nChicago, IL 60607\nUnited States",
+ "id": "chicago-fulton",
+ "image": "https://lh3.googleusercontent.com/ulGqMc02YGomqRC2EN0JP7jOL-6qaIvhCq225DwyeP7b8l-H7ZTWkYDwVKHc0Z4nXEq_TBRCqqPfcc3N8WHm54XpOh16Yx73F4ng",
+ "lat": 41.8873457,
+ "lng": -87.6526874,
+ "name": "Chicago \u2013 Fulton Market",
+ "phone": "+1 312-840-4100",
+ "region": "north-america"
+ },
+ {
+ "address": "Skt. Petri Passage 5\n1165 Copenhagen\nDenmark",
+ "id": "copenhagen",
+ "image": "https://lh3.googleusercontent.com/SNSbrYGI_ZBuCl_S8aRh63IIta895tqIUUX3ZT0FWmK7ykhJRy_HNtzoud7XrohnjnSAkuXg9YykkFZqbvkRiZQC7osXrZzGerWdmG8",
+ "lat": 55.680452,
+ "lng": 12.570071,
+ "name": "Copenhagen",
+ "phone": "+45 3370 2600",
+ "region": "europe"
+ },
+ {
+ "address": "52 Henry St.\n3rd Floor\nDetroit, MI 48201\nUnited States",
+ "id": "detroit",
+ "image": "https://lh3.googleusercontent.com/WEP2INGXZc9vRv1ii6KDZGoRFPyumV466B3RzUwyzf8W81a7du2KGXlDEqS5g0nbOHsYTAvagFGVJskSonpt6wJWN2mVq8ti7JYPtvs",
+ "lat": 42.340458,
+ "lng": -83.054494,
+ "name": "Detroit",
+ "phone": "+1 248-593-4003",
+ "region": "north-america"
+ },
+ {
+ "address": "TECOM Zone, Dubai Internet City\nDubai, United Arab Emirates",
+ "id": "dubai",
+ "image": "https://lh3.googleusercontent.com/xw0iylnw3b3-qxwoNzLSLJlAAPtkF1KONnIoBTDHtURr04fzH9DeO08GYvEsKYQtE9GCdOMTk_s08H6-btSquKo3moeILfc3Kpu4MA",
+ "lat": 25.0929,
+ "lng": 55.1591,
+ "name": "Dubai",
+ "phone": "+971 4 4509500",
+ "region": "africa-middle-east"
+ },
+ {
+ "address": "Gordon House\nBarrow St\nDublin 4\nIreland",
+ "id": "dublin",
+ "image": "https://lh3.googleusercontent.com/1z3Fhr6nKlCDeTwc1KoFAMSrnywR0lb8nNdwTI1YgoKSXKIDjQeVB_I3Q8oDZuqqHtlXiUbPmfoUYyAXMObjvMxDcMeTqSY21YvP_A",
+ "lat": 53.3399526,
+ "lng": -6.2360967,
+ "name": "Dublin",
+ "phone": "",
+ "region": "europe"
+ },
+ {
+ "address": "Taikoo Hui Tower 1, No.383 Tianhe Road\nGuangzhou, 510620\nChina",
+ "id": "guangzhou",
+ "image": "https://lh3.googleusercontent.com/BjYQfVMor1QT5hAkc7DcN6_MJdwaySHY6VJ6IY7mQGJRdXjFZhiP-t4MV_QUbp0tBeuYvuMw3nUetTiI-vFl6-BcialJhhurhFrDVeY",
+ "lat": 23.1339728,
+ "lng": 113.3332488,
+ "name": "Guangzhou",
+ "phone": "",
+ "region": "asia-pacific"
+ },
+ {
+ "address": "Sector 15, Part II Village Silokhera\nGurgaon 122001\nIndia",
+ "id": "gurgaon",
+ "image": "https://lh3.googleusercontent.com/8plKBiWKmwllCXePad0JJ22u1GG7Qe1hveXlx_xJ87XoiQpclQubwxyGxcDU6tkatpb3oi9MYXjm2XszFi5kGn1flfTtjv6MycBWrQ",
+ "lat": 28.460581,
+ "lng": 77.048194,
+ "name": "Gurgaon",
+ "phone": "+91-12-44512900",
+ "region": "asia-pacific"
+ },
+ {
+ "address": "Building 30\nMATAM, Advanced Technology Centre\nHaifa, 3190500\nIsrael ",
+ "id": "haifa",
+ "image": "https://lh3.googleusercontent.com/syKfT9cVMzLi0d4_DSiJztWGwcmWct6IEbpAApEFk_G8ym0xyLLxMBT484zROIOZHMSe9N1o-QQrCAqVWfKRSY6EOeJY9Qa1ftwb",
+ "lat": 32.78897,
+ "lng": 34.958432,
+ "name": "Haifa",
+ "phone": "+972-74-746-6245",
+ "region": "africa-middle-east"
+ },
+ {
+ "address": "ABC-Strasse 19\n20354 Hamburg\nGermany",
+ "id": "hamburg",
+ "image": "https://lh3.googleusercontent.com/66R0svr2--6zNOnrqf6JbeZ-bF39bRfHpExjcTlE_AIlPEPk8jO1LjF39FUbDnJB1gh_FiRFX6aCRg4ACjYRbDqb5lf9PdV6qY4S",
+ "lat": 53.553752,
+ "lng": 9.986229,
+ "name": "Hamburg",
+ "phone": "49 40-80-81-79-000",
+ "region": "europe"
+ },
+ {
+ "address": "1 Matheson Street\nCauseway Bay, Hong Kong",
+ "id": "hong-kong",
+ "image": "https://lh3.googleusercontent.com/-Ult8_R6TfQAk16CfjSfl6PLypQBYohUjNjE6xeeektZsrP8XwTv7PnVVE-5Ueh3I-2hPnAdRGg6XrMn9IwI7W1h5LJKtlMVe93Wfw",
+ "lat": 22.278203,
+ "lng": 114.18176,
+ "name": "Hong Kong",
+ "phone": "+852-3923-5400",
+ "region": "asia-pacific"
+ },
+ {
+ "address": "Survey No. 13, DivyaSree Omega\nKondapur Village\nHyderabad, Telangana 500084\nIndia",
+ "id": "hyderabad",
+ "image": "https://lh3.googleusercontent.com/LAEnc0tzA-JSb5XM5oct5paX98QK9zh_aqa_qKcjAoXo2MChgOjdj_EZpgIZsVAvEY-I0bmMmhCBb5gkoVN4ebqCG9ZfjCbo_stJaw",
+ "lat": 17.458461,
+ "lng": 78.372452,
+ "name": "Hyderabad",
+ "phone": "+91-40-6619-3000",
+ "region": "asia-pacific"
+ },
+ {
+ "address": "19510 Jamboree Road\nIrvine, CA 92612\nUnited States",
+ "id": "irvine",
+ "image": "https://lh3.googleusercontent.com/LWGkhXkRRzWnMlNy_Ps74-VTxB2ISXK0Kkick1SujTLYvNAUqo9_HR7SILSZZsiaiGWsXtx7dR5Hz9Q5psu1MWP9BHtDuGYc_hz_eg",
+ "lat": 33.658792,
+ "lng": -117.859322,
+ "name": "Irvine",
+ "phone": "+1 949-794-1600",
+ "region": "north-america"
+ },
+ {
+ "address": "Eski Buyukdere Caddesi No: 209\n34394\nIstanbul, Turkey",
+ "id": "istanbul",
+ "image": "https://lh3.googleusercontent.com/_mdN7z1Q-9fKgpHTb1rQJosllxqn7glRJ_G2enX4WPmImuJjLHKw-JBZ8z5B9vMSo12SexGBOD1i2NHXqEy4OaOJekn0g3Fp3bDk_Q",
+ "lat": 41.081697,
+ "lng": 29.00859,
+ "name": "Istanbul",
+ "phone": "",
+ "region": "africa-middle-east"
+ },
+ {
+ "address": "Pacific Century Place Tower Level 45 SCBD Lot 10,\nJl. Jend. Sudirman No.53,\nRT.5/RW.3, Senayan, Kby. Baru,\nKota Jakarta Selatan,\nDaerah Khusus Ibukota Jakarta 12190, \nIndonesia",
+ "id": "jakarta",
+ "image": "https://lh3.googleusercontent.com/JEaMUfOUq6bxN7jeIN1z2me5-JvlLRkrFJgf_A0GvqtOquU6Tfjg0ecKeR_Ck27L0S1zC2t_4I6nVP6pBdBtSKst7tkJEoC7LyYq",
+ "lat": -6.227664,
+ "lng": 106.808471,
+ "name": "Jakarta",
+ "phone": "",
+ "region": "asia-pacific"
+ },
+ {
+ "address": "35 Ballyclare Drive, Building E\nJohannesburg\n2191, South Africa",
+ "id": "johannesburg",
+ "image": "https://lh3.googleusercontent.com/EDxefwSgeKyh8zN9VUUGhu3hiBqH7Z3UEOXfZeij7YnUhZLqLElu8dhi4FziOepRun-fjfwIWdf5W8CTG5ZSYMu4k8z9QZjTgjQRuQ",
+ "lat": -26.0734457,
+ "lng": 28.032035,
+ "name": "Johannesburg",
+ "phone": "",
+ "region": "africa-middle-east"
+ },
+ {
+ "address": "777 6th Street South\nKirkland, WA\nUnited States",
+ "id": "kirkland",
+ "image": "https://lh3.googleusercontent.com/Vgmu21GQbS0pga_tJaG0_35AYOzM64Uxp-zNYyMVnd3oXFHmHeMJpx8UjcsMYdnxbdlFZ4KGFowOtpHxsNlUw8qS21sYBy9jPbqkuA",
+ "lat": 47.669568,
+ "lng": -122.196912,
+ "name": "Kirkland",
+ "phone": "+1 425-739-5600",
+ "region": "north-america"
+ },
+ {
+ "address": "51 Breithaupt Street\nKitchener, ON N2H 5G5\nCanada",
+ "id": "kitchener",
+ "image": "https://lh3.googleusercontent.com/jUCZzQYnJXCUZ3ZxAEB14qukCV6aGxfh84hExpcpye314DhOWB4jtpUoNDrCtA2laV7qDHBAYGtIuZan9Ir5Hp6_U0B2zTGgPqsb",
+ "lat": 43.4541137,
+ "lng": -80.4992423,
+ "name": "Kitchener",
+ "phone": "+1-519-880-2300",
+ "region": "north-america"
+ },
+ {
+ "address": "Axiata Tower\nNo. 9, Jalan Stesen Sentral 5\n50470 Kuala Lumpur\nMalaysia",
+ "id": "kuala-lumpur",
+ "image": "https://lh3.googleusercontent.com/c5kAdRoyejY1Z5i9A3hYKfIG55GrKdAc0iJjH-gYo-tWd3JUksvsfZx7LU5yzay4HJmxCQEir2cejbZ2LurYfKL_emC9e9PCDVxd",
+ "lat": 3.133445,
+ "lng": 101.684609,
+ "name": "Kuala Lumpur",
+ "phone": "",
+ "region": "asia-pacific"
+ },
+ {
+ "address": "Avenida da Liberdade, 110\nLisbon, 1269-046, Portugal",
+ "id": "lisbon",
+ "image": "https://lh3.googleusercontent.com/py3HZVLLpxjMhRL6fgUKmHqGODp6ZH-5abQBHGqyKrCyuoW0t-q0ypNVN_jOfD3ZEO08Y9Q0m-E4ZyuNrMgl-mlaECkCAEyc7Af1",
+ "lat": 38.718887,
+ "lng": -9.143781,
+ "name": "Lisbon",
+ "phone": "+351 21 122 1803",
+ "region": "europe"
+ },
+ {
+ "address": "6 Pancras Square\nLondon N1C 4AG\nUnited Kingdom",
+ "id": "london-6ps",
+ "image": "https://lh3.googleusercontent.com/WTxWzt3AOcEMwoT2OonLTlc63pa4V-GsYbZg5Hu7rfe9ZioMaRurkxaQ5tOcuC9nZkCyh2IjQb-xMy4Tq8ISrHjfDHmzZXnExTjP",
+ "lat": 51.533311,
+ "lng": -0.126026,
+ "name": "London \u2013 6PS",
+ "phone": "+44-20-7031-3000",
+ "region": "europe"
+ },
+ {
+ "address": "Belgrave House\n76 Buckingham Palace Road\nLondon SW1W 9TQ\nUnited Kingdom",
+ "id": "london-bel",
+ "image": "https://lh3.googleusercontent.com/bLxZNCaDE2Fdj7woV_9JUJEUfUvTrhI57jHNEeW-OenTspzM21miwz1gGydzZ2Ke_vfRdkqdo4dyN2mJCntC2p4qvRUyipPWppAC9g",
+ "lat": 51.494961,
+ "lng": -0.146652,
+ "name": "London \u2013 BEL",
+ "phone": "+44-20-7031-3001",
+ "region": "europe"
+ },
+ {
+ "address": "1\u201313 St Giles High St\nLondon WC2H 8AG\nUnited Kingdom",
+ "id": "london-csg",
+ "image": "https://lh3.googleusercontent.com/32nlExbSrV5rJR9Qsqfkbckn6_yd-4QRaoSDmp9JLyaZxojfl9aH1LZSrSvcsT128AUzHqkEfMhTE2miDuOu7gj-7x3Ginqr4rgowg",
+ "lat": 51.516027,
+ "lng": -0.12755,
+ "name": "London \u2013 CSG",
+ "phone": "+44 (0)20-7031-3000",
+ "region": "europe"
+ },
+ {
+ "address": "340 Main Street\nLos Angeles, CA 90291\nUnited States",
+ "id": "los-angeles",
+ "image": "https://lh3.googleusercontent.com/MWGnaY3t_1-j7YylPpq35rvBU9gIBJIsnrtW95THrBw9N0PWrAVtbHKUBH8OdxyWI9gYdymndmSgwS8tl23GylytyefNC74i4-pniQ",
+ "lat": 33.995939,
+ "lng": -118.4766773,
+ "name": "Los Angeles, US",
+ "phone": "+1 310-310-6000",
+ "region": "north-america"
+ },
+ {
+ "address": "811 E Washington Ave\nSuite 700\nMadison, WI 53703\nUnited States",
+ "id": "madison",
+ "image": "https://lh3.googleusercontent.com/sQDFJpbQl4EVGfdpHsw_24mxsnUNAnDs6f-00QCj0g_Z38CEqjG4PuLPoS_T6eTOPV3QXX907Kap_TkaE3cEG4fhJWIoWsZELIGyvw",
+ "lat": 43.081091,
+ "lng": -89.374619,
+ "name": "Madison",
+ "phone": "+1 608-669-9841",
+ "region": "north-america"
+ },
+ {
+ "address": "Plaza Pablo Ruiz Picasso, I\nMadrid 28020\nSpain",
+ "id": "madrid",
+ "image": "https://lh3.googleusercontent.com/x36CdPxkwxxctp0wvDYfTjgTzNgMiZV0xoKeLMwHzdccpJGYUA6a61fSeX1_Rt-lfofMjfUwAhFxd7DbjsE8_393plkTly-T5YkpCA",
+ "lat": 40.4505331,
+ "lng": -3.6931161,
+ "name": "Madrid",
+ "phone": "+34 91-748-6400",
+ "region": "europe"
+ },
+ {
+ "address": "161 Collins Street,\nMelbourne VIC 3000,\nAustralia",
+ "id": "melbourne",
+ "image": "https://lh3.googleusercontent.com/U_5KiB8x7T-Rrdp90ygnO1kbZxiWJz4G6CbD6_51CjH5zaMP23upWELryFOe99k_AqlPZschCY7Nx--wYufcIV54HnjGcP3lf28X1A",
+ "lat": -37.815328,
+ "lng": 144.968737,
+ "name": "Melbourne",
+ "phone": "",
+ "region": "asia-pacific"
+ },
+ {
+ "address": "Google Mexico, S. de R.L. de C.V.\nMontes Urales 445\nLomas de Chapultepec\nMexico City 11000, Mexico",
+ "id": "mexico-city",
+ "image": "https://lh3.googleusercontent.com/P_U5ECZJ--t8khoKFxoeeJwa7PZy-3TriZbit5sRJDUdupf3NZRJegsnB4ucLqdLEV3De41fmByckDDC6uHMI82cXIFp4C1WwI1a1g",
+ "lat": 19.4283793,
+ "lng": -99.2065518,
+ "name": "Mexico City",
+ "phone": "+52 55-5342-8400",
+ "region": "latin-america"
+ },
+ {
+ "address": "1450 Brickell Ave Ste 900 \nMiami FL 33131\nUnited States",
+ "id": "miami",
+ "image": "https://lh3.googleusercontent.com/DTk99d9bCqiCN8sFj3FBr8BdGPYC97PCYbiLbdq6GZ-_Er268DSlvfRM_g8hwA5tOmw_6c3PBjpKpuRQTuXS8H8_hpIlCQKyobyYjQ",
+ "lat": 25.758473,
+ "lng": -80.1932144,
+ "name": "Miami",
+ "phone": "+1 305-985-7900",
+ "region": "north-america"
+ },
+ {
+ "address": "Porta Nuova Isola, Building C, Via Federico Confalonieri 4\n20124 Milan\nItaly",
+ "id": "milan",
+ "image": "https://lh3.googleusercontent.com/nZ_KE1LqNmW5qb6i-czLlm_yqRJtLmvEmyLRI0BYjqMlOiC_5VmbEI3DeHQyPOHp6PzoN2gKJ0j73BALkddFmDFXOIe9Wwctmt73cqI",
+ "lat": 45.486147,
+ "lng": 9.189546,
+ "name": "Milan",
+ "phone": "",
+ "region": "europe"
+ },
+ {
+ "address": "1253 McGill College Avenue\nMontreal, QC H3B 2Y5\nCanada",
+ "id": "montreal",
+ "image": "https://lh3.googleusercontent.com/S310Um4pKym8bvHQcQmJLc4ohURWEq3AQHjJ-b5aMY-TpA9P4LCKcxGEg4fik-zSL6MrtiEi8Qt3JbAZl8x-GiI31wfm_myGfb3manQ",
+ "lat": 45.50191,
+ "lng": -73.570365,
+ "name": "Montreal",
+ "phone": "514-670-8700",
+ "region": "north-america"
+ },
+ {
+ "address": "7 Balchug St\nMoscow 115035\nRussia",
+ "id": "moscow",
+ "image": "https://lh3.googleusercontent.com/i6cwRxcix3LUdviTVKoLG2Ep6q9pjfPIX_nrge-YkgjIvTgCH5QQpSI6wCpKvg0HiH56lHu6K8eAkCrPZUCzspS6Y9K19U47xr4hww",
+ "lat": 55.746747,
+ "lng": 37.626435,
+ "name": "Moscow",
+ "phone": "+7-495-644-1400",
+ "region": "europe"
+ },
+ {
+ "address": "1600 Amphitheatre Parkway\nMountain View, CA 94043\nUnited States",
+ "id": "mountain-view",
+ "image": "https://lh3.googleusercontent.com/Mh8P8gvVwO7NOXfg8anxwPXRy5oKZJ6Cz_LbFfOVdeIsdDfogmMcMsiW7HD7HD2NOINzAPH_v8dALWSuDiiTjCjRnenI7B3l6Pg4yw",
+ "lat": 37.421512,
+ "lng": -122.084101,
+ "name": "Mountain View",
+ "phone": "",
+ "region": "north-america"
+ },
+ {
+ "address": "3 North Avenue\nMaker Maxity, Bandra Kurla Complex\nBandra East\nMumbai, Maharashtra 400051\nIndia",
+ "id": "mumbai",
+ "image": "https://lh3.googleusercontent.com/twldrlVORn84fYsOLwNLabfRPQYX-dJAzJtpam-Ea4D7QIY1pvMa9FCMbpjUFA8uniBg6XAh8pMijf9qnjmEm4d17UFkwRGToiv5Ug",
+ "lat": 19.054364,
+ "lng": 72.850591,
+ "name": "Mumbai",
+ "phone": "+91-22-6611-7150",
+ "region": "asia-pacific"
+ },
+ {
+ "address": "Erika-Mann-Str. 33\n80636 Munich\nGermany",
+ "id": "munich",
+ "image": "https://lh3.googleusercontent.com/sVZqxencTTD84raIgMWd5SbmXZTvQmwUzxj6IakbIGuAua5JDu-Q64uJE-cm3TYeSjKVQo7VSwIODVpwswjtrpwBUvXTa5MDFXoNAw",
+ "lat": 48.14305556,
+ "lng": 11.54083333,
+ "name": "Munich",
+ "phone": "",
+ "region": "europe"
+ },
+ {
+ "address": "111 8th Avenue\nNew York, NY 10011\nUnited States",
+ "id": "new-york",
+ "image": "https://lh3.googleusercontent.com/BWdXxSOqBpjGFzAJVVr02QQs5XSe33dEeNDG6lXhd-nuv32ruMjD01yBJX3Rk4_xP6glB1ycMvwypEPr6YO665grfWqEEI2LPYUaMg",
+ "lat": 40.741445,
+ "lng": -74.003102,
+ "name": "New York",
+ "phone": "+1 212-565-0000",
+ "region": "north-america"
+ },
+ {
+ "address": "Aker Brygge\nBryggegata 6\n0250 Oslo\nNorway",
+ "id": "oslo",
+ "image": "https://lh3.googleusercontent.com/lc9jPxaz4CzdC3sD4wFlzml1Y221PvtsisYGenint536WNbyIMY2cp2qnQOmnT0IWPoOCjarwMgK6zddvTcOu6YcAuaVLfQAdqZ2UQg",
+ "lat": 59.90987,
+ "lng": 10.72598,
+ "name": "Oslo",
+ "phone": "",
+ "region": "europe"
+ },
+ {
+ "address": "8 Rue de Londres\n75009 Paris\nFrance",
+ "id": "paris",
+ "image": "https://lh3.googleusercontent.com/GHZlAB7t3toRGww1NJ6ZC2IpvR0jkgqFkQ0ZvM02dmQWt6fiHIKJZ7Eova959UD0PAapPE2r2TYMe3-dE3jGDgEoqHch0qyjAKvPENc",
+ "lat": 48.8771,
+ "lng": 2.33,
+ "name": "Paris",
+ "phone": "",
+ "region": "europe"
+ },
+ {
+ "address": "6425 Penn Avenue\nPittsburgh, PA 15206\nUnited States",
+ "id": "pittsburgh",
+ "image": "https://lh3.googleusercontent.com/47kJwc4CR6oGOI2l_su5CJHnEWkrUZlz7LZRGXHgF71xa-0gJc8qCBhnsNoigcNEGFfBpb3y5AxVXJP_TxvHtgUgTrU8zmBm3Two7w",
+ "lat": 40.45716,
+ "lng": -79.916596,
+ "name": "Pittsburgh",
+ "phone": "+1 412-345-6700",
+ "region": "north-america"
+ },
+ {
+ "address": "12422 W. Bluff Creek Drive\nPlaya Vista, CA 90094\nUnited States",
+ "id": "playa-vista",
+ "image": "https://lh3.googleusercontent.com/xnHVNI6bCcQxJyLV6sG3op8PlJcT9XgMAGmHrXtj5axhCZPH7Tbc9Ppjb2gTCtGbKmilT17B0dKzczOJh9JANh8Wwz0SXH0pEqCOkQ",
+ "lat": 33.97684,
+ "lng": -118.407244,
+ "name": "Playa Vista",
+ "phone": "",
+ "region": "north-america"
+ },
+ {
+ "address": "Wells Fargo Building, 309 SW 6th Ave\nPortland, OR 97204\nUnited States",
+ "id": "portland",
+ "image": "https://lh3.googleusercontent.com/FMeFmwWFZJD02kj0H73t5v8NPrVOecVxuCl9cA-vLiXgaXErYQxmMXJKvvROgwSNvgPdmRZ4-GQuub74p0dDwJgY37vBNN2vgx7Utw",
+ "lat": 45.521622,
+ "lng": -122.677458,
+ "name": "Portland",
+ "phone": "",
+ "region": "north-america"
+ },
+ {
+ "address": "Stroupeznickeho str. 3191/17\nPrague, Czech Republic\n150 00",
+ "id": "prague",
+ "image": "https://lh3.googleusercontent.com/jVNKH2mzDQ4Zu1-1G80-nDvLHYE9dmeetv43WG3zo7-dQWJoX1ghtXvviZHDLRG-ScqA804I2guuExY-8pkzIdkYlU28QGOB8Jkkiw",
+ "lat": 50.070259,
+ "lng": 14.402642,
+ "name": "Prague",
+ "phone": "",
+ "region": "europe"
+ },
+ {
+ "address": "1600 Seaport Boulevard\nRedwood City, CA 94063\nUnited States",
+ "id": "redwood-city",
+ "image": "https://lh3.googleusercontent.com/a7GCRT1go5jQzEQj--A-kq98pURYsO4cTCJPj6azEev7za4Y__Kd3E_khFyn5uxRtPC0Co_ZxzQtqrlXeOSNey8fOSV4pK0ffzSW5A",
+ "lat": 37.512171,
+ "lng": -122.201178,
+ "name": "Redwood City",
+ "phone": "",
+ "region": "north-america"
+ },
+ {
+ "address": "1875 Explorer Street \n10th Floor\nReston, VA 20190\nUnited States",
+ "id": "reston",
+ "image": "https://lh3.googleusercontent.com/4WuJCZlLflcQjsyhsGX3VSGDEVmC0Ljq291ECgVk3nN89ppnhSbdQIRI1I1-qh5YEf0Yicdc6amuqKz7oAdgLvQoNBrM9Zh3BcUwSw",
+ "lat": 38.958309,
+ "lng": -77.359795,
+ "name": "Reston",
+ "phone": "+1 202-370-5600",
+ "region": "north-america"
+ },
+ {
+ "address": "901 Cherry Avenue\nSan Bruno, CA 94066\nUnited States",
+ "id": "san-bruno",
+ "image": "https://lh3.googleusercontent.com/zcy-Un_QDZfx7nTlImk-jCocxSUjQAQ4SS0eVdBuNRZz3Nyb5WK_2oGwYpnBEdqjIcv_b-umq_akpWBEylaEp-wXk3pj9-gu6Ko9Igs",
+ "lat": 37.62816,
+ "lng": -122.426491,
+ "name": "San Bruno",
+ "phone": "",
+ "region": "north-america"
+ },
+ {
+ "address": "6420 Sequence Dr \nSuite 400\nSan Diego, CA 92121\nUnited States",
+ "id": "san-diego",
+ "image": "https://lh3.googleusercontent.com/RgGUUE3ra1j-mQIH8vp6an37hlwduD8uVnaCv8ivo5mX6ekdnZYd0-hlQ1hpQzV0ZgPk7y8h60oWy5MK5VF48ozZMYRXnh1ddJjuVGo",
+ "lat": 32.90961,
+ "lng": -117.181899,
+ "name": "San Diego",
+ "phone": "+1 858-239-4000",
+ "region": "north-america"
+ },
+ {
+ "address": "345 Spear Street\nSan Francisco, CA 94105\nUnited States",
+ "id": "san-francisco",
+ "image": "https://lh3.googleusercontent.com/OC_0_XdXLar-ytOETAv3uwRGfnLABSRu66hqLQpLrwIhqInPD6ccdZSEu_d5S8wmjc1knb9OM7yNh2K7hoGznvKZOgFlvrxJesd7mQ",
+ "lat": 37.789972,
+ "lng": -122.390013,
+ "name": "San Francisco",
+ "phone": "+1 415-736-0000",
+ "region": "north-america"
+ },
+ {
+ "address": "Costanera Sur Rio 2730 \nLas Condes, Santiago\nChile",
+ "id": "santiago",
+ "image": "https://lh3.googleusercontent.com/KrMbZzxFsAcNmYg8BQL_qBAekN1bNNJGo1aar8nkFhYXYDYOBmwJc2x1XElkDdIqLdedU5V7QKTGxXne8-f-qAW_bOy1FUqmJ8JM",
+ "lat": -33.413383,
+ "lng": -70.605665,
+ "name": "Santiago",
+ "phone": "",
+ "region": "latin-america"
+ },
+ {
+ "address": "Av. Brigadeiro Faria Lima, 3477 \nS\u00e3o Paulo\n04538-133, Brazil",
+ "id": "sao-paulo",
+ "image": "https://lh3.googleusercontent.com/MwcGyEZBKkmoycVLcpl_U3gdIJBoWDU8u2kUNq57DmZVkWDyraoaZyQC0HOiFQvNHjVugEiVTWsy-poAsNfDLoSkJ5RoTBi1Hpd4GcI",
+ "lat": -23.586479,
+ "lng": -46.682078,
+ "name": "Sao Paulo",
+ "phone": "",
+ "region": "latin-america"
+ },
+ {
+ "address": "601 N. 34th Street\nSeattle, WA 98103\nUnited States",
+ "id": "seattle",
+ "image": "https://lh3.googleusercontent.com/pNaRyPV3SkqsVvmdmN0sC-viBupr-41tZM3_cpSNH_3Zdy826gIhM0zHfoowA6SCkcsOkUxDvJ8wG5CodorohisOgR9q_QE7wH1ua-M",
+ "lat": 47.649316,
+ "lng": -122.350629,
+ "name": "Seattle",
+ "phone": "+1 206-876-1800",
+ "region": "north-america"
+ },
+ {
+ "address": "Google Korea LLC.\n22nd Floor, Gangnam Finance Centre\n152 Teheran-ro, Gangnam-gu\nSeoul 06236\nSouth Korea",
+ "id": "seoul",
+ "image": "https://lh3.googleusercontent.com/i8rfvJIUNpLBkmWWSoetUzFGHUd_RaulLh8F3EHme3FMTUtDs8EVWsrFLuaemh1Zd60p5ndCcKq8-ZQN8eibbua-YNzlzQ8AKtHFzrQ",
+ "lat": 37.500295,
+ "lng": 127.036843,
+ "name": "Seoul",
+ "phone": "+82-2-531-9000",
+ "region": "asia-pacific"
+ },
+ {
+ "address": "100 Century Avenue, Pudong\nShanghai 200120\nChina",
+ "id": "shanghai",
+ "image": "https://lh3.googleusercontent.com/wFCKLAJvrAoE_GiXqRNa0w4Rsr0iY_SyMGbO2jnIhLXGanYs1c5_BPE8TxQJw-e14uaLDHjY772V-Vv-Kf3GmrIRSlHjoV9yD339wRQ",
+ "lat": 31.23464,
+ "lng": 121.507662,
+ "name": "Shanghai",
+ "phone": "+86-21-6133-7666",
+ "region": "asia-pacific"
+ },
+ {
+ "address": "70 Pasir Panjang Road, #03-71, \nMapletree Business City \nSingapore 117371",
+ "id": "singapore",
+ "image": "https://lh3.googleusercontent.com/--5H57B8aG4-DX9s79Spo3ygrsI9NMFnZo1uTZzs5s5AeeOvmiy81k__tu9r7JbRTTLzryK-oUy0UREclmD_qfV81VvaT4K9jJa8gg",
+ "lat": 1.276466,
+ "lng": 103.798965,
+ "name": "Singapore",
+ "phone": "+65 6521-8000",
+ "region": "asia-pacific"
+ },
+ {
+ "address": "Kungsbron 2 \n111 22 Stockholm\nSweden",
+ "id": "stockholm",
+ "image": "https://lh3.googleusercontent.com/Q2016qdodQKowCyzfN14RLYERc2IplyM2FzJvj0kzbW4eLXnIxoFF1eZMc_CwtodxbpyfhfebUrawHtIgFb2kh9-EQnhcaHXpV0Fnw",
+ "lat": 59.333432,
+ "lng": 18.054619,
+ "name": "Stockholm",
+ "phone": "",
+ "region": "europe"
+ },
+ {
+ "address": "803 11th Avenue\nSunnyvale, CA 94089\nUnited States",
+ "id": "sunnyvale",
+ "image": "https://lh3.googleusercontent.com/xd1Z3wr4cee9gtKQSnrOd-NWjc6UTwpwngElt4pkqukzOf-l0hrgQuRRBzvSjqmF4w1ZAHR1I12grFa5Zhqd9-7dKUitPtpMg51Zrf8",
+ "lat": 37.403694,
+ "lng": -122.031583,
+ "name": "Sunnyvale",
+ "phone": "",
+ "region": "north-america"
+ },
+ {
+ "address": "48 Pirrama Road\nSydney, NSW 2009\nAustralia ",
+ "id": "sydney",
+ "image": "https://lh3.googleusercontent.com/03Hp4ZwQHs_rWLEWQtrOc62hEHzffD_uoZFCbo56eoeLyZ3L89-Fy5Dd8WcmrGFGK31QC_hZqzuU7f9QhxqjckE7BSLo_arwWjCH1w",
+ "lat": -33.866638,
+ "lng": 151.195672,
+ "name": "Sydney",
+ "phone": "+61 2 9374 4000",
+ "region": "asia-pacific"
+ },
+ {
+ "address": "No. 7 XinYi Road Section 5, Taipei\nTaiwan",
+ "id": "taipei",
+ "image": "https://lh3.googleusercontent.com/h19TQz36F4jY_ZfQxuP5F-THZbl4nAIGz473uFfLqzD_6kpw-r3b6M_Wbna5QvvymqZ-wdnhkLCRt63Pypnc9GyawNqMlQwM1_BYbg",
+ "lat": 25.033447,
+ "lng": 121.564901,
+ "name": "Taipei",
+ "phone": "+886 2 8729 6000",
+ "region": "asia-pacific"
+ },
+ {
+ "address": "Yigal Alon 98\nTel Aviv, 6789141\nIsrael ",
+ "id": "tel-aviv",
+ "image": "https://lh3.googleusercontent.com/BZxU1dJCWFmtVeBqVYFC8SmSzX4CCzO5eedosW1s7sv2b2HoKwEno15vICfeQdsc_BGIaysKb8VyF64IB9hbFzMZ_MlQDJhP7kfF",
+ "lat": 32.070043,
+ "lng": 34.794087,
+ "name": "Tel Aviv",
+ "phone": "+972-74-746-6453",
+ "region": "africa-middle-east"
+ },
+ {
+ "address": "Roppongi Hills Mori Tower\n6-10-1 Roppongi\nMinato-ku, Tokyo 106-6126\nJapan",
+ "id": "tokyo-rpg",
+ "image": "https://lh3.googleusercontent.com/i7PqriAmbeqB7KQ4h_8K0T60DD-oAoz7bvvjlB4vx2267l9QHfKBHb7WUMSutYd88Xu4TRwWqIquL05bYcpTyU_58gWp8Ja2Xo2zOfM",
+ "lat": 35.66047,
+ "lng": 139.729231,
+ "name": "Tokyo \u2013 RPG",
+ "phone": "+81-3-6384-9000",
+ "region": "asia-pacific"
+ },
+ {
+ "address": "Shibuya Stream\n3-21-3 Shibuya\nShibuya-ku, Tokyo 150-0002\nJapan",
+ "id": "tokyo-strm",
+ "image": "https://lh3.googleusercontent.com/GzaUJcEqlixelFX8dg1qcLPwAb4RpEXr3JMxyxpgSTWL17Gso_aq3NeMtQPES7f_JdIrGr9YTBSt08XgNAeoLSkxr3Ue_J0cW3VMCw",
+ "lat": 35.6572564,
+ "lng": 139.7028246,
+ "name": "Tokyo \u2013 STRM",
+ "phone": "+81-3-6384-9000",
+ "region": "asia-pacific"
+ },
+ {
+ "address": "111 Richmond Street West\nToronto, ON M5H 2G4\nCanada",
+ "id": "toronto",
+ "image": "https://lh3.googleusercontent.com/vZUQcWL3r_bsHBRP-Z0XfhMxjlSAAe9sZLlw5rbBzqsM6w-WVjnTZGaw3w-PkqkhHPy0x-2Xzg_gishFkVjn5r3epKifwhmRc741",
+ "lat": 43.650477,
+ "lng": -79.383858,
+ "name": "Toronto",
+ "phone": "416-915-8200",
+ "region": "north-america"
+ },
+ {
+ "address": "Graben 19\n1010 Wien\nAustria",
+ "id": "vienna",
+ "image": "https://lh3.googleusercontent.com/roYQN_TnYd_fP0FCdZxA6lMLbp-h7PyPlDBKwVdfVWKkOCxmLjFHqm-n7hrcakcXHS1FzjXW5XWF_MApzuGIrvy2cewCYd7Z9q5MUw",
+ "lat": 48.209351,
+ "lng": 16.368419,
+ "name": "Vienna",
+ "phone": "",
+ "region": "europe"
+ },
+ {
+ "address": "Emilii Plater 53\n00-113 Warsaw\nPoland ",
+ "id": "warsaw",
+ "image": "https://lh3.googleusercontent.com/jTf0m2s5A2qS25ArE3x6Tl1KXtpv3JmHIfcBuw7f-JHsTR0tMiyUVeHO1wBeJ2eEGcAWUbTe3b9B8iP8wyL-TROS5zxmMofMHsnf",
+ "lat": 52.233448,
+ "lng": 21.001668,
+ "name": "Warsaw",
+ "phone": "+48 22 207 19 00",
+ "region": "europe"
+ },
+ {
+ "address": "25 Massachusetts Avenue\nWashington DC, 20001\nUnited States",
+ "id": "washington-dc",
+ "image": "https://lh3.googleusercontent.com/6rKu8CCH6nMVKjwpnxDlgf_Sdlc7jk83QBVhoLikzEyibYTZkvNPn-QPCJTv3AkjUYf2dHcE15UvPsrg18xNd4R8_eg3b-yn01yXgQ",
+ "lat": 38.898337,
+ "lng": -77.010286,
+ "name": "Washington DC",
+ "phone": " (202) 346-1100",
+ "region": "north-america"
+ },
+ {
+ "address": "Gen. Jozefa Bema nr 2\n50-265 Wroclaw\nPoland",
+ "id": "wroclaw",
+ "image": "https://lh3.googleusercontent.com/Or6dY4MCUCbMnDv4kG8J7u-QTsWhvbqbAbMN9Vp38aJAS7ec7A39gYddcEGbrwd_veFeZo2phypqc1ABk20PZ9jCVxZfuNGYS7j3LDc",
+ "lat": 51.117687,
+ "lng": 17.041737,
+ "name": "Wroclaw",
+ "phone": "+48 (71) 73 41 000",
+ "region": "europe"
+ },
+ {
+ "address": "Brandschenkestrasse 110\n8002 Z\u00fcrich\nSwitzerland",
+ "id": "zurich",
+ "image": "https://lh3.googleusercontent.com/kmEsDEYzbMlluwDPYkeEEBpAvL9MJbXZR3hD3uettOqE8T7lbXvV508j4d4QngB7iwYZa8YYlXiVnGWfZ4ZvTJbputGXsfxrLGhD3tI",
+ "lat": 47.365063,
+ "lng": 8.524425,
+ "name": "Zurich",
+ "phone": "+41 44 668 18 00",
+ "region": "europe"
+ }
+ ],
+ "regions": [
+ {
+ "coords": {
+ "lat": 2.9660291,
+ "lng": 1.3271339
+ },
+ "id": "africa-middle-east",
+ "name": "Africa & Middle East",
+ "zoom": 3.0
+ },
+ {
+ "coords": {
+ "lat": 0.0524811,
+ "lng": 127.6560787
+ },
+ "id": "asia-pacific",
+ "name": "Asia Pacific",
+ "zoom": 3.0
+ },
+ {
+ "coords": {
+ "lat": 46.1352815,
+ "lng": 7.4033438
+ },
+ "id": "europe",
+ "name": "Europe",
+ "zoom": 4.0
+ },
+ {
+ "coords": {
+ "lat": -17.5554497,
+ "lng": -99.2316195
+ },
+ "id": "latin-america",
+ "name": "Latin America",
+ "zoom": 3.0
+ },
+ {
+ "coords": {
+ "lat": 45.7128252,
+ "lng": -97.1547448
+ },
+ "id": "north-america",
+ "name": "North America",
+ "zoom": 4.0
+ }
+ ]
+}
diff --git a/google_maps/ios/.gitignore b/google_maps/ios/.gitignore
new file mode 100644
index 000000000..7a7f9873a
--- /dev/null
+++ b/google_maps/ios/.gitignore
@@ -0,0 +1,34 @@
+**/dgph
+*.mode1v3
+*.mode2v3
+*.moved-aside
+*.pbxuser
+*.perspectivev3
+**/*sync/
+.sconsign.dblite
+.tags*
+**/.vagrant/
+**/DerivedData/
+Icon?
+**/Pods/
+**/.symlinks/
+profile
+xcuserdata
+**/.generated/
+Flutter/App.framework
+Flutter/Flutter.framework
+Flutter/Flutter.podspec
+Flutter/Generated.xcconfig
+Flutter/ephemeral/
+Flutter/app.flx
+Flutter/app.zip
+Flutter/flutter_assets/
+Flutter/flutter_export_environment.sh
+ServiceDefinitions.json
+Runner/GeneratedPluginRegistrant.*
+
+# Exceptions to above rules.
+!default.mode1v3
+!default.mode2v3
+!default.pbxuser
+!default.perspectivev3
diff --git a/google_maps/ios/Flutter/AppFrameworkInfo.plist b/google_maps/ios/Flutter/AppFrameworkInfo.plist
new file mode 100644
index 000000000..9625e105d
--- /dev/null
+++ b/google_maps/ios/Flutter/AppFrameworkInfo.plist
@@ -0,0 +1,26 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ App
+ CFBundleIdentifier
+ io.flutter.flutter.app
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ App
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1.0
+ MinimumOSVersion
+ 11.0
+
+
diff --git a/google_maps/ios/Flutter/Debug.xcconfig b/google_maps/ios/Flutter/Debug.xcconfig
new file mode 100644
index 000000000..ec97fc6f3
--- /dev/null
+++ b/google_maps/ios/Flutter/Debug.xcconfig
@@ -0,0 +1,2 @@
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
+#include "Generated.xcconfig"
diff --git a/google_maps/ios/Flutter/Release.xcconfig b/google_maps/ios/Flutter/Release.xcconfig
new file mode 100644
index 000000000..c4855bfe2
--- /dev/null
+++ b/google_maps/ios/Flutter/Release.xcconfig
@@ -0,0 +1,2 @@
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
+#include "Generated.xcconfig"
diff --git a/google_maps/ios/Podfile b/google_maps/ios/Podfile
new file mode 100644
index 000000000..86a8a4b9d
--- /dev/null
+++ b/google_maps/ios/Podfile
@@ -0,0 +1,41 @@
+# Google Maps SDK requires platform version 13
+platform :ios, '13.0'
+
+# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
+ENV['COCOAPODS_DISABLE_STATS'] = 'true'
+
+project 'Runner', {
+ 'Debug' => :debug,
+ 'Profile' => :release,
+ 'Release' => :release,
+}
+
+def flutter_root
+ generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
+ unless File.exist?(generated_xcode_build_settings_path)
+ raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
+ end
+
+ File.foreach(generated_xcode_build_settings_path) do |line|
+ matches = line.match(/FLUTTER_ROOT\=(.*)/)
+ return matches[1].strip if matches
+ end
+ raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
+end
+
+require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
+
+flutter_ios_podfile_setup
+
+target 'Runner' do
+ use_frameworks!
+ use_modular_headers!
+
+ flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
+end
+
+post_install do |installer|
+ installer.pods_project.targets.each do |target|
+ flutter_additional_ios_build_settings(target)
+ end
+end
diff --git a/google_maps/ios/Runner.xcodeproj/project.pbxproj b/google_maps/ios/Runner.xcodeproj/project.pbxproj
new file mode 100644
index 000000000..b702779a0
--- /dev/null
+++ b/google_maps/ios/Runner.xcodeproj/project.pbxproj
@@ -0,0 +1,551 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 54;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
+ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
+ 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
+ 7616842171F8B2591E077EE5 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4ECEA7648C7D20094E023750 /* Pods_Runner.framework */; };
+ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
+ 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
+ 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+ 9705A1C41CF9048500538489 /* Embed Frameworks */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ );
+ name = "Embed Frameworks";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+ 0A226A01B64205FAEDE3FA05 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
+ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
+ 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
+ 20FA5C4C1A42FDD96EB0B855 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
+ 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
+ 4ECEA7648C7D20094E023750 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 624164245F0CCBBCE8156C38 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
+ 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
+ 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
+ 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
+ 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
+ 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
+ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 97C146EB1CF9000F007C117D /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 7616842171F8B2591E077EE5 /* Pods_Runner.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 44AAF079C3DB77FC1F61BC96 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 4ECEA7648C7D20094E023750 /* Pods_Runner.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ 563ED8F6F3A15841B9974AFE /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 20FA5C4C1A42FDD96EB0B855 /* Pods-Runner.debug.xcconfig */,
+ 624164245F0CCBBCE8156C38 /* Pods-Runner.release.xcconfig */,
+ 0A226A01B64205FAEDE3FA05 /* Pods-Runner.profile.xcconfig */,
+ );
+ name = Pods;
+ path = Pods;
+ sourceTree = "";
+ };
+ 9740EEB11CF90186004384FC /* Flutter */ = {
+ isa = PBXGroup;
+ children = (
+ 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
+ 9740EEB21CF90195004384FC /* Debug.xcconfig */,
+ 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
+ 9740EEB31CF90195004384FC /* Generated.xcconfig */,
+ );
+ name = Flutter;
+ sourceTree = "";
+ };
+ 97C146E51CF9000F007C117D = {
+ isa = PBXGroup;
+ children = (
+ 9740EEB11CF90186004384FC /* Flutter */,
+ 97C146F01CF9000F007C117D /* Runner */,
+ 97C146EF1CF9000F007C117D /* Products */,
+ 563ED8F6F3A15841B9974AFE /* Pods */,
+ 44AAF079C3DB77FC1F61BC96 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ 97C146EF1CF9000F007C117D /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 97C146EE1CF9000F007C117D /* Runner.app */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 97C146F01CF9000F007C117D /* Runner */ = {
+ isa = PBXGroup;
+ children = (
+ 97C146FA1CF9000F007C117D /* Main.storyboard */,
+ 97C146FD1CF9000F007C117D /* Assets.xcassets */,
+ 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
+ 97C147021CF9000F007C117D /* Info.plist */,
+ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
+ 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
+ 74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
+ 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
+ );
+ path = Runner;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 97C146ED1CF9000F007C117D /* Runner */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
+ buildPhases = (
+ 78182010A5BB8ACDC157B661 /* [CP] Check Pods Manifest.lock */,
+ 9740EEB61CF901F6004384FC /* Run Script */,
+ 97C146EA1CF9000F007C117D /* Sources */,
+ 97C146EB1CF9000F007C117D /* Frameworks */,
+ 97C146EC1CF9000F007C117D /* Resources */,
+ 9705A1C41CF9048500538489 /* Embed Frameworks */,
+ 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
+ 4F28FC32511692FB285FCC6B /* [CP] Copy Pods Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = Runner;
+ productName = Runner;
+ productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 97C146E61CF9000F007C117D /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 1300;
+ ORGANIZATIONNAME = "";
+ TargetAttributes = {
+ 97C146ED1CF9000F007C117D = {
+ CreatedOnToolsVersion = 7.3.1;
+ LastSwiftMigration = 1100;
+ };
+ };
+ };
+ buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 97C146E51CF9000F007C117D;
+ productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 97C146ED1CF9000F007C117D /* Runner */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 97C146EC1CF9000F007C117D /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
+ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
+ 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
+ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
+ isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Thin Binary";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
+ };
+ 4F28FC32511692FB285FCC6B /* [CP] Copy Pods Resources */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Copy Pods Resources";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 78182010A5BB8ACDC157B661 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 9740EEB61CF901F6004384FC /* Run Script */ = {
+ isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Run Script";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 97C146EA1CF9000F007C117D /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
+ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+ 97C146FA1CF9000F007C117D /* Main.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 97C146FB1CF9000F007C117D /* Base */,
+ );
+ name = Main.storyboard;
+ sourceTree = "";
+ };
+ 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 97C147001CF9000F007C117D /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 249021D3217E4FDB00AE95B9 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Profile;
+ };
+ 249021D4217E4FDB00AE95B9 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = Runner/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.googleMapsInFlutter;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Profile;
+ };
+ 97C147031CF9000F007C117D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 97C147041CF9000F007C117D /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 97C147061CF9000F007C117D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = Runner/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.googleMapsInFlutter;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Debug;
+ };
+ 97C147071CF9000F007C117D /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = Runner/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.googleMapsInFlutter;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 97C147031CF9000F007C117D /* Debug */,
+ 97C147041CF9000F007C117D /* Release */,
+ 249021D3217E4FDB00AE95B9 /* Profile */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 97C147061CF9000F007C117D /* Debug */,
+ 97C147071CF9000F007C117D /* Release */,
+ 249021D4217E4FDB00AE95B9 /* Profile */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 97C146E61CF9000F007C117D /* Project object */;
+}
diff --git a/google_maps/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/google_maps/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 000000000..919434a62
--- /dev/null
+++ b/google_maps/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/google_maps/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/google_maps/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 000000000..18d981003
--- /dev/null
+++ b/google_maps/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/google_maps/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/google_maps/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
new file mode 100644
index 000000000..f9b0d7c5e
--- /dev/null
+++ b/google_maps/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
@@ -0,0 +1,8 @@
+
+
+
+
+ PreviewsEnabled
+
+
+
diff --git a/google_maps/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/google_maps/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
new file mode 100644
index 000000000..c87d15a33
--- /dev/null
+++ b/google_maps/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/google_maps/ios/Runner.xcworkspace/contents.xcworkspacedata b/google_maps/ios/Runner.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 000000000..21a3cc14c
--- /dev/null
+++ b/google_maps/ios/Runner.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/google_maps/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/google_maps/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 000000000..18d981003
--- /dev/null
+++ b/google_maps/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/google_maps/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/google_maps/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
new file mode 100644
index 000000000..f9b0d7c5e
--- /dev/null
+++ b/google_maps/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
@@ -0,0 +1,8 @@
+
+
+
+
+ PreviewsEnabled
+
+
+
diff --git a/google_maps/ios/Runner/AppDelegate.swift b/google_maps/ios/Runner/AppDelegate.swift
new file mode 100644
index 000000000..fc796444c
--- /dev/null
+++ b/google_maps/ios/Runner/AppDelegate.swift
@@ -0,0 +1,18 @@
+import UIKit
+import Flutter
+import GoogleMaps
+
+@UIApplicationMain
+@objc class AppDelegate: FlutterAppDelegate {
+ override func application(
+ _ application: UIApplication,
+ didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
+ ) -> Bool {
+ GeneratedPluginRegistrant.register(with: self)
+
+ // TODO: Add your Google Maps API key
+ GMSServices.provideAPIKey("AIzaSyBFVI6nt-1Yn_lFYWMidyqUk8ca0eE1Sv8")
+
+ return super.application(application, didFinishLaunchingWithOptions: launchOptions)
+ }
+}
diff --git a/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 000000000..d36b1fab2
--- /dev/null
+++ b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,122 @@
+{
+ "images" : [
+ {
+ "size" : "20x20",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-20x20@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "20x20",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-20x20@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-29x29@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-29x29@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-29x29@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-40x40@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-40x40@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-60x60@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-60x60@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "20x20",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-20x20@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "20x20",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-20x20@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-29x29@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-29x29@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-40x40@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-40x40@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-76x76@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-76x76@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "83.5x83.5",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-83.5x83.5@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "1024x1024",
+ "idiom" : "ios-marketing",
+ "filename" : "Icon-App-1024x1024@1x.png",
+ "scale" : "1x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
diff --git a/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
new file mode 100644
index 000000000..dc9ada472
Binary files /dev/null and b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ
diff --git a/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
new file mode 100644
index 000000000..28c6bf030
Binary files /dev/null and b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ
diff --git a/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
new file mode 100644
index 000000000..2ccbfd967
Binary files /dev/null and b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ
diff --git a/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
new file mode 100644
index 000000000..f091b6b0b
Binary files /dev/null and b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ
diff --git a/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
new file mode 100644
index 000000000..4cde12118
Binary files /dev/null and b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ
diff --git a/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
new file mode 100644
index 000000000..d0ef06e7e
Binary files /dev/null and b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ
diff --git a/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
new file mode 100644
index 000000000..dcdc2306c
Binary files /dev/null and b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ
diff --git a/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
new file mode 100644
index 000000000..2ccbfd967
Binary files /dev/null and b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ
diff --git a/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
new file mode 100644
index 000000000..c8f9ed8f5
Binary files /dev/null and b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ
diff --git a/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
new file mode 100644
index 000000000..a6d6b8609
Binary files /dev/null and b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ
diff --git a/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
new file mode 100644
index 000000000..a6d6b8609
Binary files /dev/null and b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ
diff --git a/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
new file mode 100644
index 000000000..75b2d164a
Binary files /dev/null and b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ
diff --git a/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
new file mode 100644
index 000000000..c4df70d39
Binary files /dev/null and b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ
diff --git a/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
new file mode 100644
index 000000000..6a84f41e1
Binary files /dev/null and b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ
diff --git a/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
new file mode 100644
index 000000000..d0e1f5853
Binary files /dev/null and b/google_maps/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ
diff --git a/google_maps/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/google_maps/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
new file mode 100644
index 000000000..0bedcf2fd
--- /dev/null
+++ b/google_maps/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchImage.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchImage@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchImage@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
diff --git a/google_maps/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/google_maps/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
new file mode 100644
index 000000000..9da19eaca
Binary files /dev/null and b/google_maps/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png differ
diff --git a/google_maps/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/google_maps/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
new file mode 100644
index 000000000..9da19eaca
Binary files /dev/null and b/google_maps/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ
diff --git a/google_maps/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/google_maps/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
new file mode 100644
index 000000000..9da19eaca
Binary files /dev/null and b/google_maps/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ
diff --git a/google_maps/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/google_maps/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
new file mode 100644
index 000000000..89c2725b7
--- /dev/null
+++ b/google_maps/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
@@ -0,0 +1,5 @@
+# Launch Screen Assets
+
+You can customize the launch screen with your own desired assets by replacing the image files in this directory.
+
+You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
\ No newline at end of file
diff --git a/google_maps/ios/Runner/Base.lproj/LaunchScreen.storyboard b/google_maps/ios/Runner/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 000000000..f2e259c7c
--- /dev/null
+++ b/google_maps/ios/Runner/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/google_maps/ios/Runner/Base.lproj/Main.storyboard b/google_maps/ios/Runner/Base.lproj/Main.storyboard
new file mode 100644
index 000000000..f3c28516f
--- /dev/null
+++ b/google_maps/ios/Runner/Base.lproj/Main.storyboard
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/google_maps/ios/Runner/Info.plist b/google_maps/ios/Runner/Info.plist
new file mode 100644
index 000000000..3d7ffa12c
--- /dev/null
+++ b/google_maps/ios/Runner/Info.plist
@@ -0,0 +1,51 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleDisplayName
+ Google Maps In Flutter
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ google_maps_in_flutter
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ $(FLUTTER_BUILD_NAME)
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ $(FLUTTER_BUILD_NUMBER)
+ LSRequiresIPhoneOS
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIMainStoryboardFile
+ Main
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UIViewControllerBasedStatusBarAppearance
+
+ CADisableMinimumFrameDurationOnPhone
+
+ UIApplicationSupportsIndirectInputEvents
+
+
+
diff --git a/google_maps/ios/Runner/Runner-Bridging-Header.h b/google_maps/ios/Runner/Runner-Bridging-Header.h
new file mode 100644
index 000000000..308a2a560
--- /dev/null
+++ b/google_maps/ios/Runner/Runner-Bridging-Header.h
@@ -0,0 +1 @@
+#import "GeneratedPluginRegistrant.h"
diff --git a/google_maps/lib/main.dart b/google_maps/lib/main.dart
new file mode 100644
index 000000000..2dd334417
--- /dev/null
+++ b/google_maps/lib/main.dart
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import 'package:flutter/material.dart';
+import 'package:google_maps_flutter/google_maps_flutter.dart';
+
+void main() => runApp(const MyApp());
+
+class MyApp extends StatefulWidget {
+ const MyApp({super.key});
+
+ @override
+ State createState() => _MyAppState();
+}
+
+class _MyAppState extends State {
+ late GoogleMapController mapController;
+
+ final LatLng _center = const LatLng(-33.86, 151.20);
+
+ void _onMapCreated(GoogleMapController controller) {
+ mapController = controller;
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return MaterialApp(
+ home: Scaffold(
+ appBar: AppBar(
+ title: const Text('Sydney'),
+ backgroundColor: Colors.green[700],
+ ),
+ body: GoogleMap(
+ onMapCreated: _onMapCreated,
+ initialCameraPosition: CameraPosition(
+ target: _center,
+ zoom: 11.0,
+ ),
+ markers: {
+ // ignore: prefer_const_constructors
+ Marker(
+ markerId: const MarkerId('Sydney'),
+ position: const LatLng(-33.86, 151.20),
+ )
+ }),
+ ),
+ );
+ }
+}
diff --git a/google_maps/lib/src/locations.dart b/google_maps/lib/src/locations.dart
new file mode 100644
index 000000000..8b36f9344
--- /dev/null
+++ b/google_maps/lib/src/locations.dart
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import 'dart:convert';
+
+import 'package:flutter/foundation.dart';
+import 'package:flutter/services.dart' show rootBundle;
+import 'package:http/http.dart' as http;
+import 'package:json_annotation/json_annotation.dart';
+
+part 'locations.g.dart';
+
+@JsonSerializable()
+class LatLng {
+ LatLng({
+ required this.lat,
+ required this.lng,
+ });
+
+ factory LatLng.fromJson(Map json) => _$LatLngFromJson(json);
+ Map toJson() => _$LatLngToJson(this);
+
+ final double lat;
+ final double lng;
+}
+
+@JsonSerializable()
+class Region {
+ Region({
+ required this.coords,
+ required this.id,
+ required this.name,
+ required this.zoom,
+ });
+
+ factory Region.fromJson(Map json) => _$RegionFromJson(json);
+ Map toJson() => _$RegionToJson(this);
+
+ final LatLng coords;
+ final String id;
+ final String name;
+ final double zoom;
+}
+
+@JsonSerializable()
+class Office {
+ Office({
+ required this.address,
+ required this.id,
+ required this.image,
+ required this.lat,
+ required this.lng,
+ required this.name,
+ required this.phone,
+ required this.region,
+ });
+
+ factory Office.fromJson(Map json) => _$OfficeFromJson(json);
+ Map toJson() => _$OfficeToJson(this);
+
+ final String address;
+ final String id;
+ final String image;
+ final double lat;
+ final double lng;
+ final String name;
+ final String phone;
+ final String region;
+}
+
+@JsonSerializable()
+class Locations {
+ Locations({
+ required this.offices,
+ required this.regions,
+ });
+
+ factory Locations.fromJson(Map json) =>
+ _$LocationsFromJson(json);
+ Map toJson() => _$LocationsToJson(this);
+
+ final List offices;
+ final List regions;
+}
+
+Future getGoogleOffices() async {
+ const googleLocationsURL = 'https://about.google/static/data/locations.json';
+
+ // Retrieve the locations of Google offices
+ try {
+ final response = await http.get(Uri.parse(googleLocationsURL));
+ if (response.statusCode == 200) {
+ return Locations.fromJson(
+ json.decode(response.body) as Map);
+ }
+ } catch (e) {
+ if (kDebugMode) {
+ print(e);
+ }
+ }
+
+ // Fallback for when the above HTTP request fails.
+ return Locations.fromJson(
+ json.decode(
+ await rootBundle.loadString('assets/locations.json'),
+ ) as Map,
+ );
+}
diff --git a/google_maps/lib/src/locations.g.dart b/google_maps/lib/src/locations.g.dart
new file mode 100644
index 000000000..64cd86d81
--- /dev/null
+++ b/google_maps/lib/src/locations.g.dart
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// GENERATED CODE - DO NOT MODIFY BY HAND
+
+part of 'locations.dart';
+
+// **************************************************************************
+// JsonSerializableGenerator
+// **************************************************************************
+
+LatLng _$LatLngFromJson(Map json) => LatLng(
+ lat: (json['lat'] as num).toDouble(),
+ lng: (json['lng'] as num).toDouble(),
+ );
+
+Map _$LatLngToJson(LatLng instance) => {
+ 'lat': instance.lat,
+ 'lng': instance.lng,
+ };
+
+Region _$RegionFromJson(Map json) => Region(
+ coords: LatLng.fromJson(json['coords'] as Map),
+ id: json['id'] as String,
+ name: json['name'] as String,
+ zoom: (json['zoom'] as num).toDouble(),
+ );
+
+Map _$RegionToJson(Region instance) => {
+ 'coords': instance.coords,
+ 'id': instance.id,
+ 'name': instance.name,
+ 'zoom': instance.zoom,
+ };
+
+Office _$OfficeFromJson(Map json) => Office(
+ address: json['address'] as String,
+ id: json['id'] as String,
+ image: json['image'] as String,
+ lat: (json['lat'] as num).toDouble(),
+ lng: (json['lng'] as num).toDouble(),
+ name: json['name'] as String,
+ phone: json['phone'] as String,
+ region: json['region'] as String,
+ );
+
+Map _$OfficeToJson(Office instance) => {
+ 'address': instance.address,
+ 'id': instance.id,
+ 'image': instance.image,
+ 'lat': instance.lat,
+ 'lng': instance.lng,
+ 'name': instance.name,
+ 'phone': instance.phone,
+ 'region': instance.region,
+ };
+
+Locations _$LocationsFromJson(Map json) => Locations(
+ offices: (json['offices'] as List)
+ .map((e) => Office.fromJson(e as Map))
+ .toList(),
+ regions: (json['regions'] as List)
+ .map((e) => Region.fromJson(e as Map))
+ .toList(),
+ );
+
+Map _$LocationsToJson(Locations instance) => {
+ 'offices': instance.offices,
+ 'regions': instance.regions,
+ };
diff --git a/google_maps/pubspec.yaml b/google_maps/pubspec.yaml
new file mode 100644
index 000000000..f464c0eb7
--- /dev/null
+++ b/google_maps/pubspec.yaml
@@ -0,0 +1,26 @@
+name: google_maps_in_flutter
+description: A new Flutter project.
+publish_to: 'none'
+version: 1.0.0+1
+environment:
+ sdk: '>=2.19.0 <3.0.0'
+dependencies:
+ flutter:
+ sdk: flutter
+ cupertino_icons: ^1.0.2
+ google_maps_flutter: ^2.2.1
+ google_maps_flutter_web: ^0.4.0+3
+ http: ^0.13.5
+ json_annotation: ^4.7.0
+ json_serializable: ^6.5.4
+dev_dependencies:
+ analysis_defaults:
+ path: ../analysis_defaults
+ flutter_test:
+ sdk: flutter
+ flutter_lints: ^2.0.0
+ build_runner: ^2.3.2
+flutter:
+ uses-material-design: true
+ assets:
+ - assets/locations.json
diff --git a/google_maps/test/widget_test.dart b/google_maps/test/widget_test.dart
new file mode 100644
index 000000000..f70631097
--- /dev/null
+++ b/google_maps/test/widget_test.dart
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import 'package:flutter_test/flutter_test.dart';
+
+import 'package:google_maps_in_flutter/main.dart';
+
+void main() {
+ testWidgets('Do nothing test', (tester) async {
+ // Build our app and trigger a frame.
+ await tester.pumpWidget(const MyApp());
+ });
+}
diff --git a/google_maps/web/favicon.png b/google_maps/web/favicon.png
new file mode 100644
index 000000000..8aaa46ac1
Binary files /dev/null and b/google_maps/web/favicon.png differ
diff --git a/google_maps/web/icons/Icon-192.png b/google_maps/web/icons/Icon-192.png
new file mode 100644
index 000000000..b749bfef0
Binary files /dev/null and b/google_maps/web/icons/Icon-192.png differ
diff --git a/google_maps/web/icons/Icon-512.png b/google_maps/web/icons/Icon-512.png
new file mode 100644
index 000000000..88cfd48df
Binary files /dev/null and b/google_maps/web/icons/Icon-512.png differ
diff --git a/google_maps/web/icons/Icon-maskable-192.png b/google_maps/web/icons/Icon-maskable-192.png
new file mode 100644
index 000000000..eb9b4d76e
Binary files /dev/null and b/google_maps/web/icons/Icon-maskable-192.png differ
diff --git a/google_maps/web/icons/Icon-maskable-512.png b/google_maps/web/icons/Icon-maskable-512.png
new file mode 100644
index 000000000..d69c56691
Binary files /dev/null and b/google_maps/web/icons/Icon-maskable-512.png differ
diff --git a/google_maps/web/index.html b/google_maps/web/index.html
new file mode 100644
index 000000000..a0acd9e6a
--- /dev/null
+++ b/google_maps/web/index.html
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ google_maps_in_flutter
+
+
+
+
+
+
+
+
+
+
diff --git a/google_maps/web/manifest.json b/google_maps/web/manifest.json
new file mode 100644
index 000000000..44ae8337f
--- /dev/null
+++ b/google_maps/web/manifest.json
@@ -0,0 +1,35 @@
+{
+ "name": "google_maps_in_flutter",
+ "short_name": "google_maps_in_flutter",
+ "start_url": ".",
+ "display": "standalone",
+ "background_color": "#0175C2",
+ "theme_color": "#0175C2",
+ "description": "A new Flutter project.",
+ "orientation": "portrait-primary",
+ "prefer_related_applications": false,
+ "icons": [
+ {
+ "src": "icons/Icon-192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "icons/Icon-512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ },
+ {
+ "src": "icons/Icon-maskable-192.png",
+ "sizes": "192x192",
+ "type": "image/png",
+ "purpose": "maskable"
+ },
+ {
+ "src": "icons/Icon-maskable-512.png",
+ "sizes": "512x512",
+ "type": "image/png",
+ "purpose": "maskable"
+ }
+ ]
+}
diff --git a/tool/flutter_ci_script_beta.sh b/tool/flutter_ci_script_beta.sh
index a17deede5..413b6f231 100755
--- a/tool/flutter_ci_script_beta.sh
+++ b/tool/flutter_ci_script_beta.sh
@@ -41,6 +41,7 @@ declare -ar PROJECT_NAMES=(
"flutter_maps_firestore"
"form_app"
"game_template"
+ "google_maps"
"infinite_list"
"ios_app_clip"
"isolate_example"
diff --git a/tool/flutter_ci_script_master.sh b/tool/flutter_ci_script_master.sh
index 7a8cb7edf..5189530f0 100755
--- a/tool/flutter_ci_script_master.sh
+++ b/tool/flutter_ci_script_master.sh
@@ -41,6 +41,7 @@ declare -ar PROJECT_NAMES=(
"flutter_maps_firestore"
"form_app"
"game_template"
+ "google_maps"
"infinite_list"
"ios_app_clip"
"isolate_example"
diff --git a/tool/flutter_ci_script_stable.sh b/tool/flutter_ci_script_stable.sh
index b14f38927..9414afa4f 100755
--- a/tool/flutter_ci_script_stable.sh
+++ b/tool/flutter_ci_script_stable.sh
@@ -37,6 +37,7 @@ declare -ar PROJECT_NAMES=(
"flutter_maps_firestore"
"form_app"
"game_template"
+ "google_maps"
"infinite_list"
"ios_app_clip"
"isolate_example"