├── .gitignore ├── .metadata ├── LICENSE ├── README.md ├── android ├── .gitignore ├── app │ ├── build.gradle │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── flutterlocationpicker │ │ │ └── MainActivity.java │ │ └── res │ │ ├── drawable │ │ └── launch_background.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ └── values │ │ └── styles.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle ├── example ├── demo.dart ├── locations-without-town.gif └── locations.gif ├── flutter_location_picker.iml ├── flutter_location_picker_android.iml ├── ios ├── .gitignore ├── Flutter │ ├── AppFrameworkInfo.plist │ ├── Debug.xcconfig │ └── Release.xcconfig ├── Runner.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ └── xcschemes │ │ └── Runner.xcscheme ├── Runner.xcworkspace │ └── contents.xcworkspacedata └── Runner │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ ├── Contents.json │ │ ├── Icon-App-1024x1024@1x.png │ │ ├── Icon-App-20x20@1x.png │ │ ├── Icon-App-20x20@2x.png │ │ ├── Icon-App-20x20@3x.png │ │ ├── Icon-App-29x29@1x.png │ │ ├── Icon-App-29x29@2x.png │ │ ├── Icon-App-29x29@3x.png │ │ ├── Icon-App-40x40@1x.png │ │ ├── Icon-App-40x40@2x.png │ │ ├── Icon-App-40x40@3x.png │ │ ├── Icon-App-60x60@2x.png │ │ ├── Icon-App-60x60@3x.png │ │ ├── Icon-App-76x76@1x.png │ │ ├── Icon-App-76x76@2x.png │ │ └── Icon-App-83.5x83.5@2x.png │ └── LaunchImage.imageset │ │ ├── Contents.json │ │ ├── LaunchImage.png │ │ ├── LaunchImage@2x.png │ │ ├── LaunchImage@3x.png │ │ └── README.md │ ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard │ ├── Info.plist │ └── main.m ├── lib ├── flutter_location_picker.dart ├── generated │ └── i18n.dart └── location.dart ├── pubspec.lock ├── pubspec.yaml ├── res └── values │ └── strings_en.arb └── test └── widget_test.dart /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | .DS_Store 3 | .dart_tool/ 4 | 5 | .packages 6 | .pub/ 7 | 8 | build/ 9 | 10 | .flutter-plugins 11 | -------------------------------------------------------------------------------- /.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: e4b989bf3dbefc61f11bce298d16f92ebd9cde41 8 | channel: dev 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2018 chengda 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # flutter_location_picker 2 | 3 | 地理位置信息 目前只适用于国内用户. 4 | 5 | 6 | ## 配置 7 | 8 | Depend 9 | 10 | ```yaml 11 | dependencies: 12 | flutter_location_picker: ^0.0.6 13 | ``` 14 | 15 | Install 16 | 17 | ```shell 18 | 19 | $ flutter packages get 20 | 21 | ``` 22 | 23 | Import 24 | 25 | ```dart 26 | 27 | import 'package:flutter_location_picker/flutter_location_picker.dart'; 28 | 29 | ``` 30 | 31 | ## 用法 32 | 33 | 34 | ### 省市区初始化 35 | 36 | ```dart 37 | 38 | LocationPicker.showPicker( 39 | context, 40 | showTitleActions: true, 41 | initialProvince: '上海', 42 | initialCity: '上海', 43 | initialTown: '长宁', 44 | onChanged: (p, c, t) { 45 | print('$p $c $t'); 46 | }, 47 | onConfirm: (p, c, t) { 48 | print('$p $c $t'); 49 | }, 50 | ); 51 | 52 | ``` 53 | 54 | ![Example sources](./example/locations.gif) 55 | 56 | 57 | ### `initialTown: null` 只选择省市 58 | 59 | ```dart 60 | 61 | LocationPicker.showPicker( 62 | context, 63 | showTitleActions: true, 64 | initialProvince: '上海', 65 | initialCity: '上海', 66 | initialTown: null, 67 | onChanged: (p, c, t) { 68 | print('$p $c $t'); 69 | }, 70 | onConfirm: (p, c, t) { 71 | print('$p $c $t'); 72 | }, 73 | ); 74 | 75 | 76 | ``` 77 | 78 | ![Example sources](./example/locations-without-town.gif) 79 | 80 | 81 | # License 82 | 83 | ``` 84 | 85 | The MIT License (MIT) 86 | 87 | Copyright (c) 2018 chengda 88 | 89 | Permission is hereby granted, free of charge, to any person obtaining a copy 90 | of this software and associated documentation files (the "Software"), to deal 91 | in the Software without restriction, including without limitation the rights 92 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 93 | copies of the Software, and to permit persons to whom the Software is 94 | furnished to do so, subject to the following conditions: 95 | 96 | The above copyright notice and this permission notice shall be included in all 97 | copies or substantial portions of the Software. 98 | 99 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 100 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 101 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 102 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 103 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 104 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 105 | SOFTWARE. 106 | 107 | ``` 108 | 109 | -------------------------------------------------------------------------------- /android/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | *.class 3 | .gradle 4 | /local.properties 5 | /.idea/workspace.xml 6 | /.idea/libraries 7 | .DS_Store 8 | /build 9 | /captures 10 | GeneratedPluginRegistrant.java 11 | -------------------------------------------------------------------------------- /android/app/build.gradle: -------------------------------------------------------------------------------- 1 | def localProperties = new Properties() 2 | def localPropertiesFile = rootProject.file('local.properties') 3 | if (localPropertiesFile.exists()) { 4 | localPropertiesFile.withReader('UTF-8') { reader -> 5 | localProperties.load(reader) 6 | } 7 | } 8 | 9 | def flutterRoot = localProperties.getProperty('flutter.sdk') 10 | if (flutterRoot == null) { 11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") 12 | } 13 | 14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode') 15 | if (flutterVersionCode == null) { 16 | flutterVersionCode = '1' 17 | } 18 | 19 | def flutterVersionName = localProperties.getProperty('flutter.versionName') 20 | if (flutterVersionName == null) { 21 | flutterVersionName = '1.0' 22 | } 23 | 24 | apply plugin: 'com.android.application' 25 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" 26 | 27 | android { 28 | compileSdkVersion 27 29 | 30 | lintOptions { 31 | disable 'InvalidPackage' 32 | } 33 | 34 | defaultConfig { 35 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 36 | applicationId "com.example.flutterlocationpicker" 37 | minSdkVersion 16 38 | targetSdkVersion 27 39 | versionCode flutterVersionCode.toInteger() 40 | versionName flutterVersionName 41 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 42 | } 43 | 44 | buildTypes { 45 | release { 46 | // TODO: Add your own signing config for the release build. 47 | // Signing with the debug keys for now, so `flutter run --release` works. 48 | signingConfig signingConfigs.debug 49 | } 50 | } 51 | } 52 | 53 | flutter { 54 | source '../..' 55 | } 56 | 57 | dependencies { 58 | testImplementation 'junit:junit:4.12' 59 | androidTestImplementation 'com.android.support.test:runner:1.0.2' 60 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' 61 | } 62 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 8 | 9 | 10 | 15 | 19 | 26 | 30 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/example/flutterlocationpicker/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.flutterlocationpicker; 2 | 3 | import android.os.Bundle; 4 | import io.flutter.app.FlutterActivity; 5 | import io.flutter.plugins.GeneratedPluginRegistrant; 6 | 7 | public class MainActivity extends FlutterActivity { 8 | @Override 9 | protected void onCreate(Bundle savedInstanceState) { 10 | super.onCreate(savedInstanceState); 11 | GeneratedPluginRegistrant.registerWith(this); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/best-flutter/flutter_location_picker/b64c6ec6459f1e6629bbc3328429809f5b10920b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/best-flutter/flutter_location_picker/b64c6ec6459f1e6629bbc3328429809f5b10920b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/best-flutter/flutter_location_picker/b64c6ec6459f1e6629bbc3328429809f5b10920b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/best-flutter/flutter_location_picker/b64c6ec6459f1e6629bbc3328429809f5b10920b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/best-flutter/flutter_location_picker/b64c6ec6459f1e6629bbc3328429809f5b10920b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | google() 4 | jcenter() 5 | } 6 | 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:3.1.2' 9 | } 10 | } 11 | 12 | allprojects { 13 | repositories { 14 | google() 15 | jcenter() 16 | } 17 | } 18 | 19 | rootProject.buildDir = '../build' 20 | subprojects { 21 | project.buildDir = "${rootProject.buildDir}/${project.name}" 22 | } 23 | subprojects { 24 | project.evaluationDependsOn(':app') 25 | } 26 | 27 | task clean(type: Delete) { 28 | delete rootProject.buildDir 29 | } 30 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/best-flutter/flutter_location_picker/b64c6ec6459f1e6629bbc3328429809f5b10920b/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip 7 | -------------------------------------------------------------------------------- /android/gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 10 | DEFAULT_JVM_OPTS="" 11 | 12 | APP_NAME="Gradle" 13 | APP_BASE_NAME=`basename "$0"` 14 | 15 | # Use the maximum available, or set MAX_FD != -1 to use that value. 16 | MAX_FD="maximum" 17 | 18 | warn ( ) { 19 | echo "$*" 20 | } 21 | 22 | die ( ) { 23 | echo 24 | echo "$*" 25 | echo 26 | exit 1 27 | } 28 | 29 | # OS specific support (must be 'true' or 'false'). 30 | cygwin=false 31 | msys=false 32 | darwin=false 33 | case "`uname`" in 34 | CYGWIN* ) 35 | cygwin=true 36 | ;; 37 | Darwin* ) 38 | darwin=true 39 | ;; 40 | MINGW* ) 41 | msys=true 42 | ;; 43 | esac 44 | 45 | # Attempt to set APP_HOME 46 | # Resolve links: $0 may be a link 47 | PRG="$0" 48 | # Need this for relative symlinks. 49 | while [ -h "$PRG" ] ; do 50 | ls=`ls -ld "$PRG"` 51 | link=`expr "$ls" : '.*-> \(.*\)$'` 52 | if expr "$link" : '/.*' > /dev/null; then 53 | PRG="$link" 54 | else 55 | PRG=`dirname "$PRG"`"/$link" 56 | fi 57 | done 58 | SAVED="`pwd`" 59 | cd "`dirname \"$PRG\"`/" >/dev/null 60 | APP_HOME="`pwd -P`" 61 | cd "$SAVED" >/dev/null 62 | 63 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 64 | 65 | # Determine the Java command to use to start the JVM. 66 | if [ -n "$JAVA_HOME" ] ; then 67 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 68 | # IBM's JDK on AIX uses strange locations for the executables 69 | JAVACMD="$JAVA_HOME/jre/sh/java" 70 | else 71 | JAVACMD="$JAVA_HOME/bin/java" 72 | fi 73 | if [ ! -x "$JAVACMD" ] ; then 74 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 75 | 76 | Please set the JAVA_HOME variable in your environment to match the 77 | location of your Java installation." 78 | fi 79 | else 80 | JAVACMD="java" 81 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 82 | 83 | Please set the JAVA_HOME variable in your environment to match the 84 | location of your Java installation." 85 | fi 86 | 87 | # Increase the maximum file descriptors if we can. 88 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then 89 | MAX_FD_LIMIT=`ulimit -H -n` 90 | if [ $? -eq 0 ] ; then 91 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 92 | MAX_FD="$MAX_FD_LIMIT" 93 | fi 94 | ulimit -n $MAX_FD 95 | if [ $? -ne 0 ] ; then 96 | warn "Could not set maximum file descriptor limit: $MAX_FD" 97 | fi 98 | else 99 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 100 | fi 101 | fi 102 | 103 | # For Darwin, add options to specify how the application appears in the dock 104 | if $darwin; then 105 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 106 | fi 107 | 108 | # For Cygwin, switch paths to Windows format before running java 109 | if $cygwin ; then 110 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 111 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 112 | JAVACMD=`cygpath --unix "$JAVACMD"` 113 | 114 | # We build the pattern for arguments to be converted via cygpath 115 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 116 | SEP="" 117 | for dir in $ROOTDIRSRAW ; do 118 | ROOTDIRS="$ROOTDIRS$SEP$dir" 119 | SEP="|" 120 | done 121 | OURCYGPATTERN="(^($ROOTDIRS))" 122 | # Add a user-defined pattern to the cygpath arguments 123 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 124 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 125 | fi 126 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 127 | i=0 128 | for arg in "$@" ; do 129 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 130 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 131 | 132 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 133 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 134 | else 135 | eval `echo args$i`="\"$arg\"" 136 | fi 137 | i=$((i+1)) 138 | done 139 | case $i in 140 | (0) set -- ;; 141 | (1) set -- "$args0" ;; 142 | (2) set -- "$args0" "$args1" ;; 143 | (3) set -- "$args0" "$args1" "$args2" ;; 144 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 145 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 146 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 147 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 148 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 149 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 150 | esac 151 | fi 152 | 153 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules 154 | function splitJvmOpts() { 155 | JVM_OPTS=("$@") 156 | } 157 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS 158 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" 159 | 160 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" 161 | -------------------------------------------------------------------------------- /android/gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() 4 | 5 | def plugins = new Properties() 6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') 7 | if (pluginsFile.exists()) { 8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } 9 | } 10 | 11 | plugins.each { name, path -> 12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() 13 | include ":$name" 14 | project(":$name").projectDir = pluginDirectory 15 | } 16 | -------------------------------------------------------------------------------- /example/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import '../lib/flutter_location_picker.dart'; 3 | 4 | void main ()=> runApp(MaterialApp( 5 | home: Scaffold( 6 | body: App(), 7 | ), 8 | )); 9 | 10 | class App extends StatefulWidget { 11 | @override 12 | _AppState createState ()=> _AppState(); 13 | } 14 | 15 | class _AppState extends State { 16 | String province = '上海'; 17 | String city = '上海'; 18 | var town = null; 19 | 20 | @override 21 | Widget build(BuildContext context) { 22 | return Container( 23 | child: Container( 24 | width: MediaQuery.of(context).size.width, 25 | child: RaisedButton( 26 | color: Colors.white, 27 | child: Column( 28 | crossAxisAlignment: CrossAxisAlignment.center, 29 | mainAxisAlignment: MainAxisAlignment.center, 30 | children: [ 31 | Text( 32 | 'Pick location', 33 | style: TextStyle( 34 | fontSize: 24.0, 35 | height: 2.0 36 | ), 37 | ), 38 | Text( 39 | '$province $city ${town ?? ''}', 40 | style: TextStyle( 41 | fontSize: 22.0 42 | ), 43 | ) 44 | ], 45 | ), 46 | onPressed: () { 47 | LocationPicker.showPicker( 48 | context, 49 | showTitleActions: true, 50 | initialProvince: province, 51 | initialCity: city, 52 | initialTown: town, 53 | onChanged: (p, c, t) { 54 | print('$p $c $t'); 55 | }, 56 | onConfirm: (p, c, t) { 57 | print('$p $c $t'); 58 | setState((){ 59 | province = p; 60 | city = c; 61 | town = t; 62 | }); 63 | }, 64 | ); 65 | } 66 | ), 67 | ), 68 | ); 69 | } 70 | } -------------------------------------------------------------------------------- /example/locations-without-town.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/best-flutter/flutter_location_picker/b64c6ec6459f1e6629bbc3328429809f5b10920b/example/locations-without-town.gif -------------------------------------------------------------------------------- /example/locations.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/best-flutter/flutter_location_picker/b64c6ec6459f1e6629bbc3328429809f5b10920b/example/locations.gif -------------------------------------------------------------------------------- /flutter_location_picker.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /flutter_location_picker_android.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /ios/.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | .vagrant/ 3 | .sconsign.dblite 4 | .svn/ 5 | 6 | .DS_Store 7 | *.swp 8 | profile 9 | 10 | DerivedData/ 11 | build/ 12 | GeneratedPluginRegistrant.h 13 | GeneratedPluginRegistrant.m 14 | 15 | .generated/ 16 | 17 | *.pbxuser 18 | *.mode1v3 19 | *.mode2v3 20 | *.perspectivev3 21 | 22 | !default.pbxuser 23 | !default.mode1v3 24 | !default.mode2v3 25 | !default.perspectivev3 26 | 27 | xcuserdata 28 | 29 | *.moved-aside 30 | 31 | *.pyc 32 | *sync/ 33 | Icon? 34 | .tags* 35 | 36 | /Flutter/app.flx 37 | /Flutter/app.zip 38 | /Flutter/flutter_assets/ 39 | /Flutter/App.framework 40 | /Flutter/Flutter.framework 41 | /Flutter/Generated.xcconfig 42 | /ServiceDefinitions.json 43 | 44 | Pods/ 45 | .symlinks/ 46 | -------------------------------------------------------------------------------- /ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 11 | 2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */ = {isa = PBXBuildFile; fileRef = 2D5378251FAA1A9400D5DBA9 /* flutter_assets */; }; 12 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 13 | 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; }; 14 | 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 15 | 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; }; 16 | 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 17 | 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; }; 18 | 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; }; 19 | 97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; }; 20 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 21 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 22 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; 23 | /* End PBXBuildFile section */ 24 | 25 | /* Begin PBXCopyFilesBuildPhase section */ 26 | 9705A1C41CF9048500538489 /* Embed Frameworks */ = { 27 | isa = PBXCopyFilesBuildPhase; 28 | buildActionMask = 2147483647; 29 | dstPath = ""; 30 | dstSubfolderSpec = 10; 31 | files = ( 32 | 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */, 33 | 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */, 34 | ); 35 | name = "Embed Frameworks"; 36 | runOnlyForDeploymentPostprocessing = 0; 37 | }; 38 | /* End PBXCopyFilesBuildPhase section */ 39 | 40 | /* Begin PBXFileReference section */ 41 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 42 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 43 | 2D5378251FAA1A9400D5DBA9 /* flutter_assets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = flutter_assets; path = Flutter/flutter_assets; sourceTree = SOURCE_ROOT; }; 44 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 45 | 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; }; 46 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 47 | 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 48 | 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 49 | 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 50 | 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 51 | 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; }; 52 | 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; 53 | 97C146F21CF9000F007C117D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 54 | 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 55 | 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 56 | 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 57 | 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 58 | /* End PBXFileReference section */ 59 | 60 | /* Begin PBXFrameworksBuildPhase section */ 61 | 97C146EB1CF9000F007C117D /* Frameworks */ = { 62 | isa = PBXFrameworksBuildPhase; 63 | buildActionMask = 2147483647; 64 | files = ( 65 | 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */, 66 | 3B80C3941E831B6300D905FE /* App.framework in Frameworks */, 67 | ); 68 | runOnlyForDeploymentPostprocessing = 0; 69 | }; 70 | /* End PBXFrameworksBuildPhase section */ 71 | 72 | /* Begin PBXGroup section */ 73 | 9740EEB11CF90186004384FC /* Flutter */ = { 74 | isa = PBXGroup; 75 | children = ( 76 | 2D5378251FAA1A9400D5DBA9 /* flutter_assets */, 77 | 3B80C3931E831B6300D905FE /* App.framework */, 78 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 79 | 9740EEBA1CF902C7004384FC /* Flutter.framework */, 80 | 9740EEB21CF90195004384FC /* Debug.xcconfig */, 81 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, 82 | 9740EEB31CF90195004384FC /* Generated.xcconfig */, 83 | ); 84 | name = Flutter; 85 | sourceTree = ""; 86 | }; 87 | 97C146E51CF9000F007C117D = { 88 | isa = PBXGroup; 89 | children = ( 90 | 9740EEB11CF90186004384FC /* Flutter */, 91 | 97C146F01CF9000F007C117D /* Runner */, 92 | 97C146EF1CF9000F007C117D /* Products */, 93 | CF3B75C9A7D2FA2A4C99F110 /* Frameworks */, 94 | ); 95 | sourceTree = ""; 96 | }; 97 | 97C146EF1CF9000F007C117D /* Products */ = { 98 | isa = PBXGroup; 99 | children = ( 100 | 97C146EE1CF9000F007C117D /* Runner.app */, 101 | ); 102 | name = Products; 103 | sourceTree = ""; 104 | }; 105 | 97C146F01CF9000F007C117D /* Runner */ = { 106 | isa = PBXGroup; 107 | children = ( 108 | 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */, 109 | 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */, 110 | 97C146FA1CF9000F007C117D /* Main.storyboard */, 111 | 97C146FD1CF9000F007C117D /* Assets.xcassets */, 112 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, 113 | 97C147021CF9000F007C117D /* Info.plist */, 114 | 97C146F11CF9000F007C117D /* Supporting Files */, 115 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, 116 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, 117 | ); 118 | path = Runner; 119 | sourceTree = ""; 120 | }; 121 | 97C146F11CF9000F007C117D /* Supporting Files */ = { 122 | isa = PBXGroup; 123 | children = ( 124 | 97C146F21CF9000F007C117D /* main.m */, 125 | ); 126 | name = "Supporting Files"; 127 | sourceTree = ""; 128 | }; 129 | /* End PBXGroup section */ 130 | 131 | /* Begin PBXNativeTarget section */ 132 | 97C146ED1CF9000F007C117D /* Runner */ = { 133 | isa = PBXNativeTarget; 134 | buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; 135 | buildPhases = ( 136 | 9740EEB61CF901F6004384FC /* Run Script */, 137 | 97C146EA1CF9000F007C117D /* Sources */, 138 | 97C146EB1CF9000F007C117D /* Frameworks */, 139 | 97C146EC1CF9000F007C117D /* Resources */, 140 | 9705A1C41CF9048500538489 /* Embed Frameworks */, 141 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 142 | ); 143 | buildRules = ( 144 | ); 145 | dependencies = ( 146 | ); 147 | name = Runner; 148 | productName = Runner; 149 | productReference = 97C146EE1CF9000F007C117D /* Runner.app */; 150 | productType = "com.apple.product-type.application"; 151 | }; 152 | /* End PBXNativeTarget section */ 153 | 154 | /* Begin PBXProject section */ 155 | 97C146E61CF9000F007C117D /* Project object */ = { 156 | isa = PBXProject; 157 | attributes = { 158 | LastUpgradeCheck = 0910; 159 | ORGANIZATIONNAME = "The Chromium Authors"; 160 | TargetAttributes = { 161 | 97C146ED1CF9000F007C117D = { 162 | CreatedOnToolsVersion = 7.3.1; 163 | }; 164 | }; 165 | }; 166 | buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; 167 | compatibilityVersion = "Xcode 3.2"; 168 | developmentRegion = English; 169 | hasScannedForEncodings = 0; 170 | knownRegions = ( 171 | en, 172 | Base, 173 | ); 174 | mainGroup = 97C146E51CF9000F007C117D; 175 | productRefGroup = 97C146EF1CF9000F007C117D /* Products */; 176 | projectDirPath = ""; 177 | projectRoot = ""; 178 | targets = ( 179 | 97C146ED1CF9000F007C117D /* Runner */, 180 | ); 181 | }; 182 | /* End PBXProject section */ 183 | 184 | /* Begin PBXResourcesBuildPhase section */ 185 | 97C146EC1CF9000F007C117D /* Resources */ = { 186 | isa = PBXResourcesBuildPhase; 187 | buildActionMask = 2147483647; 188 | files = ( 189 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 190 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 191 | 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */, 192 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 193 | 2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */, 194 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, 195 | ); 196 | runOnlyForDeploymentPostprocessing = 0; 197 | }; 198 | /* End PBXResourcesBuildPhase section */ 199 | 200 | /* Begin PBXShellScriptBuildPhase section */ 201 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { 202 | isa = PBXShellScriptBuildPhase; 203 | buildActionMask = 2147483647; 204 | files = ( 205 | ); 206 | inputPaths = ( 207 | ); 208 | name = "Thin Binary"; 209 | outputPaths = ( 210 | ); 211 | runOnlyForDeploymentPostprocessing = 0; 212 | shellPath = /bin/sh; 213 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin"; 214 | }; 215 | 9740EEB61CF901F6004384FC /* Run Script */ = { 216 | isa = PBXShellScriptBuildPhase; 217 | buildActionMask = 2147483647; 218 | files = ( 219 | ); 220 | inputPaths = ( 221 | ); 222 | name = "Run Script"; 223 | outputPaths = ( 224 | ); 225 | runOnlyForDeploymentPostprocessing = 0; 226 | shellPath = /bin/sh; 227 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; 228 | }; 229 | /* End PBXShellScriptBuildPhase section */ 230 | 231 | /* Begin PBXSourcesBuildPhase section */ 232 | 97C146EA1CF9000F007C117D /* Sources */ = { 233 | isa = PBXSourcesBuildPhase; 234 | buildActionMask = 2147483647; 235 | files = ( 236 | 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */, 237 | 97C146F31CF9000F007C117D /* main.m in Sources */, 238 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, 239 | ); 240 | runOnlyForDeploymentPostprocessing = 0; 241 | }; 242 | /* End PBXSourcesBuildPhase section */ 243 | 244 | /* Begin PBXVariantGroup section */ 245 | 97C146FA1CF9000F007C117D /* Main.storyboard */ = { 246 | isa = PBXVariantGroup; 247 | children = ( 248 | 97C146FB1CF9000F007C117D /* Base */, 249 | ); 250 | name = Main.storyboard; 251 | sourceTree = ""; 252 | }; 253 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { 254 | isa = PBXVariantGroup; 255 | children = ( 256 | 97C147001CF9000F007C117D /* Base */, 257 | ); 258 | name = LaunchScreen.storyboard; 259 | sourceTree = ""; 260 | }; 261 | /* End PBXVariantGroup section */ 262 | 263 | /* Begin XCBuildConfiguration section */ 264 | 97C147031CF9000F007C117D /* Debug */ = { 265 | isa = XCBuildConfiguration; 266 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; 267 | buildSettings = { 268 | ALWAYS_SEARCH_USER_PATHS = NO; 269 | CLANG_ANALYZER_NONNULL = YES; 270 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 271 | CLANG_CXX_LIBRARY = "libc++"; 272 | CLANG_ENABLE_MODULES = YES; 273 | CLANG_ENABLE_OBJC_ARC = YES; 274 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 275 | CLANG_WARN_BOOL_CONVERSION = YES; 276 | CLANG_WARN_COMMA = YES; 277 | CLANG_WARN_CONSTANT_CONVERSION = YES; 278 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 279 | CLANG_WARN_EMPTY_BODY = YES; 280 | CLANG_WARN_ENUM_CONVERSION = YES; 281 | CLANG_WARN_INFINITE_RECURSION = YES; 282 | CLANG_WARN_INT_CONVERSION = YES; 283 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 284 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 285 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 286 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 287 | CLANG_WARN_STRICT_PROTOTYPES = YES; 288 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 289 | CLANG_WARN_UNREACHABLE_CODE = YES; 290 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 291 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 292 | COPY_PHASE_STRIP = NO; 293 | DEBUG_INFORMATION_FORMAT = dwarf; 294 | ENABLE_STRICT_OBJC_MSGSEND = YES; 295 | ENABLE_TESTABILITY = YES; 296 | GCC_C_LANGUAGE_STANDARD = gnu99; 297 | GCC_DYNAMIC_NO_PIC = NO; 298 | GCC_NO_COMMON_BLOCKS = YES; 299 | GCC_OPTIMIZATION_LEVEL = 0; 300 | GCC_PREPROCESSOR_DEFINITIONS = ( 301 | "DEBUG=1", 302 | "$(inherited)", 303 | ); 304 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 305 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 306 | GCC_WARN_UNDECLARED_SELECTOR = YES; 307 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 308 | GCC_WARN_UNUSED_FUNCTION = YES; 309 | GCC_WARN_UNUSED_VARIABLE = YES; 310 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 311 | MTL_ENABLE_DEBUG_INFO = YES; 312 | ONLY_ACTIVE_ARCH = YES; 313 | SDKROOT = iphoneos; 314 | TARGETED_DEVICE_FAMILY = "1,2"; 315 | }; 316 | name = Debug; 317 | }; 318 | 97C147041CF9000F007C117D /* Release */ = { 319 | isa = XCBuildConfiguration; 320 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 321 | buildSettings = { 322 | ALWAYS_SEARCH_USER_PATHS = NO; 323 | CLANG_ANALYZER_NONNULL = YES; 324 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 325 | CLANG_CXX_LIBRARY = "libc++"; 326 | CLANG_ENABLE_MODULES = YES; 327 | CLANG_ENABLE_OBJC_ARC = YES; 328 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 329 | CLANG_WARN_BOOL_CONVERSION = YES; 330 | CLANG_WARN_COMMA = YES; 331 | CLANG_WARN_CONSTANT_CONVERSION = YES; 332 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 333 | CLANG_WARN_EMPTY_BODY = YES; 334 | CLANG_WARN_ENUM_CONVERSION = YES; 335 | CLANG_WARN_INFINITE_RECURSION = YES; 336 | CLANG_WARN_INT_CONVERSION = YES; 337 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 338 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 339 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 340 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 341 | CLANG_WARN_STRICT_PROTOTYPES = YES; 342 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 343 | CLANG_WARN_UNREACHABLE_CODE = YES; 344 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 345 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 346 | COPY_PHASE_STRIP = NO; 347 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 348 | ENABLE_NS_ASSERTIONS = NO; 349 | ENABLE_STRICT_OBJC_MSGSEND = YES; 350 | GCC_C_LANGUAGE_STANDARD = gnu99; 351 | GCC_NO_COMMON_BLOCKS = YES; 352 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 353 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 354 | GCC_WARN_UNDECLARED_SELECTOR = YES; 355 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 356 | GCC_WARN_UNUSED_FUNCTION = YES; 357 | GCC_WARN_UNUSED_VARIABLE = YES; 358 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 359 | MTL_ENABLE_DEBUG_INFO = NO; 360 | SDKROOT = iphoneos; 361 | TARGETED_DEVICE_FAMILY = "1,2"; 362 | VALIDATE_PRODUCT = YES; 363 | }; 364 | name = Release; 365 | }; 366 | 97C147061CF9000F007C117D /* Debug */ = { 367 | isa = XCBuildConfiguration; 368 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; 369 | buildSettings = { 370 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 371 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 372 | ENABLE_BITCODE = NO; 373 | FRAMEWORK_SEARCH_PATHS = ( 374 | "$(inherited)", 375 | "$(PROJECT_DIR)/Flutter", 376 | ); 377 | INFOPLIST_FILE = Runner/Info.plist; 378 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 379 | LIBRARY_SEARCH_PATHS = ( 380 | "$(inherited)", 381 | "$(PROJECT_DIR)/Flutter", 382 | ); 383 | PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterLocationPicker; 384 | PRODUCT_NAME = "$(TARGET_NAME)"; 385 | VERSIONING_SYSTEM = "apple-generic"; 386 | }; 387 | name = Debug; 388 | }; 389 | 97C147071CF9000F007C117D /* Release */ = { 390 | isa = XCBuildConfiguration; 391 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 392 | buildSettings = { 393 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 394 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 395 | ENABLE_BITCODE = NO; 396 | FRAMEWORK_SEARCH_PATHS = ( 397 | "$(inherited)", 398 | "$(PROJECT_DIR)/Flutter", 399 | ); 400 | INFOPLIST_FILE = Runner/Info.plist; 401 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 402 | LIBRARY_SEARCH_PATHS = ( 403 | "$(inherited)", 404 | "$(PROJECT_DIR)/Flutter", 405 | ); 406 | PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterLocationPicker; 407 | PRODUCT_NAME = "$(TARGET_NAME)"; 408 | VERSIONING_SYSTEM = "apple-generic"; 409 | }; 410 | name = Release; 411 | }; 412 | /* End XCBuildConfiguration section */ 413 | 414 | /* Begin XCConfigurationList section */ 415 | 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { 416 | isa = XCConfigurationList; 417 | buildConfigurations = ( 418 | 97C147031CF9000F007C117D /* Debug */, 419 | 97C147041CF9000F007C117D /* Release */, 420 | ); 421 | defaultConfigurationIsVisible = 0; 422 | defaultConfigurationName = Release; 423 | }; 424 | 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { 425 | isa = XCConfigurationList; 426 | buildConfigurations = ( 427 | 97C147061CF9000F007C117D /* Debug */, 428 | 97C147071CF9000F007C117D /* Release */, 429 | ); 430 | defaultConfigurationIsVisible = 0; 431 | defaultConfigurationName = Release; 432 | }; 433 | /* End XCConfigurationList section */ 434 | }; 435 | rootObject = 97C146E61CF9000F007C117D /* Project object */; 436 | } 437 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 31 | 32 | 33 | 34 | 40 | 41 | 42 | 43 | 44 | 45 | 56 | 58 | 64 | 65 | 66 | 67 | 68 | 69 | 75 | 77 | 83 | 84 | 85 | 86 | 88 | 89 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.m: -------------------------------------------------------------------------------- 1 | #include "AppDelegate.h" 2 | #include "GeneratedPluginRegistrant.h" 3 | 4 | @implementation AppDelegate 5 | 6 | - (BOOL)application:(UIApplication *)application 7 | didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 8 | [GeneratedPluginRegistrant registerWithRegistry:self]; 9 | // Override point for customization after application launch. 10 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 11 | } 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "Icon-App-20x20@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-App-20x20@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-App-29x29@1x.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-App-29x29@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "29x29", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-App-29x29@3x.png", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-App-40x40@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "40x40", 41 | "idiom" : "iphone", 42 | "filename" : "Icon-App-40x40@3x.png", 43 | "scale" : "3x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "Icon-App-60x60@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "60x60", 53 | "idiom" : "iphone", 54 | "filename" : "Icon-App-60x60@3x.png", 55 | "scale" : "3x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "Icon-App-20x20@1x.png", 61 | "scale" : "1x" 62 | }, 63 | { 64 | "size" : "20x20", 65 | "idiom" : "ipad", 66 | "filename" : "Icon-App-20x20@2x.png", 67 | "scale" : "2x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "Icon-App-29x29@1x.png", 73 | "scale" : "1x" 74 | }, 75 | { 76 | "size" : "29x29", 77 | "idiom" : "ipad", 78 | "filename" : "Icon-App-29x29@2x.png", 79 | "scale" : "2x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "Icon-App-40x40@1x.png", 85 | "scale" : "1x" 86 | }, 87 | { 88 | "size" : "40x40", 89 | "idiom" : "ipad", 90 | "filename" : "Icon-App-40x40@2x.png", 91 | "scale" : "2x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "Icon-App-76x76@1x.png", 97 | "scale" : "1x" 98 | }, 99 | { 100 | "size" : "76x76", 101 | "idiom" : "ipad", 102 | "filename" : "Icon-App-76x76@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "83.5x83.5", 107 | "idiom" : "ipad", 108 | "filename" : "Icon-App-83.5x83.5@2x.png", 109 | "scale" : "2x" 110 | }, 111 | { 112 | "size" : "1024x1024", 113 | "idiom" : "ios-marketing", 114 | "filename" : "Icon-App-1024x1024@1x.png", 115 | "scale" : "1x" 116 | } 117 | ], 118 | "info" : { 119 | "version" : 1, 120 | "author" : "xcode" 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/best-flutter/flutter_location_picker/b64c6ec6459f1e6629bbc3328429809f5b10920b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/best-flutter/flutter_location_picker/b64c6ec6459f1e6629bbc3328429809f5b10920b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/best-flutter/flutter_location_picker/b64c6ec6459f1e6629bbc3328429809f5b10920b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/best-flutter/flutter_location_picker/b64c6ec6459f1e6629bbc3328429809f5b10920b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/best-flutter/flutter_location_picker/b64c6ec6459f1e6629bbc3328429809f5b10920b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/best-flutter/flutter_location_picker/b64c6ec6459f1e6629bbc3328429809f5b10920b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/best-flutter/flutter_location_picker/b64c6ec6459f1e6629bbc3328429809f5b10920b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/best-flutter/flutter_location_picker/b64c6ec6459f1e6629bbc3328429809f5b10920b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/best-flutter/flutter_location_picker/b64c6ec6459f1e6629bbc3328429809f5b10920b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/best-flutter/flutter_location_picker/b64c6ec6459f1e6629bbc3328429809f5b10920b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/best-flutter/flutter_location_picker/b64c6ec6459f1e6629bbc3328429809f5b10920b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/best-flutter/flutter_location_picker/b64c6ec6459f1e6629bbc3328429809f5b10920b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/best-flutter/flutter_location_picker/b64c6ec6459f1e6629bbc3328429809f5b10920b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/best-flutter/flutter_location_picker/b64c6ec6459f1e6629bbc3328429809f5b10920b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/best-flutter/flutter_location_picker/b64c6ec6459f1e6629bbc3328429809f5b10920b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/best-flutter/flutter_location_picker/b64c6ec6459f1e6629bbc3328429809f5b10920b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/best-flutter/flutter_location_picker/b64c6ec6459f1e6629bbc3328429809f5b10920b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/best-flutter/flutter_location_picker/b64c6ec6459f1e6629bbc3328429809f5b10920b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | 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. -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | flutter_location_picker 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | $(FLUTTER_BUILD_NAME) 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(FLUTTER_BUILD_NUMBER) 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UISupportedInterfaceOrientations 30 | 31 | UIInterfaceOrientationPortrait 32 | UIInterfaceOrientationLandscapeLeft 33 | UIInterfaceOrientationLandscapeRight 34 | 35 | UISupportedInterfaceOrientations~ipad 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationPortraitUpsideDown 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | UIViewControllerBasedStatusBarAppearance 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char* argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lib/flutter_location_picker.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | import './location.dart'; 5 | 6 | typedef DateChangedCallback(String province, String city, String town); 7 | 8 | const double _kPickerHeight = 220.0; 9 | const double _kPickerTitleHeight = 44.0; 10 | const double _kPickerItemHeight = 40.0; 11 | 12 | class LocationPicker { 13 | static void showPicker( 14 | BuildContext context, { 15 | bool showTitleActions: true, 16 | initialProvince: '上海市', 17 | initialCity: '上海市', 18 | initialTown: '长宁区', 19 | DateChangedCallback onChanged, 20 | DateChangedCallback onConfirm, 21 | }) { 22 | Navigator.push( 23 | context, 24 | new _PickerRoute( 25 | showTitleActions: showTitleActions, 26 | initialProvince: initialProvince, 27 | initialCity: initialCity, 28 | initialTown: initialTown, 29 | onChanged: onChanged, 30 | onConfirm: onConfirm, 31 | theme: Theme.of(context, shadowThemeOnly: true), 32 | barrierLabel: 33 | MaterialLocalizations.of(context).modalBarrierDismissLabel, 34 | )); 35 | } 36 | } 37 | 38 | class _PickerRoute extends PopupRoute { 39 | _PickerRoute({ 40 | this.showTitleActions, 41 | this.initialProvince, 42 | this.initialCity, 43 | this.initialTown, 44 | this.onChanged, 45 | this.onConfirm, 46 | this.theme, 47 | this.barrierLabel, 48 | RouteSettings settings, 49 | }) : super(settings: settings); 50 | 51 | final bool showTitleActions; 52 | final String initialProvince, initialCity, initialTown; 53 | final DateChangedCallback onChanged; 54 | final DateChangedCallback onConfirm; 55 | final ThemeData theme; 56 | 57 | @override 58 | Duration get transitionDuration => const Duration(milliseconds: 200); 59 | 60 | @override 61 | bool get barrierDismissible => true; 62 | 63 | @override 64 | final String barrierLabel; 65 | 66 | @override 67 | Color get barrierColor => Colors.black54; 68 | 69 | AnimationController _animationController; 70 | 71 | @override 72 | AnimationController createAnimationController() { 73 | assert(_animationController == null); 74 | _animationController = 75 | BottomSheet.createAnimationController(navigator.overlay); 76 | return _animationController; 77 | } 78 | 79 | @override 80 | Widget buildPage(BuildContext context, Animation animation, 81 | Animation secondaryAnimation) { 82 | Widget bottomSheet = new MediaQuery.removePadding( 83 | context: context, 84 | removeTop: true, 85 | child: _PickerComponent( 86 | initialProvince: initialProvince, 87 | initialCity: initialCity, 88 | initialTown: initialTown, 89 | onChanged: onChanged, 90 | route: this, 91 | ), 92 | ); 93 | if (theme != null) { 94 | bottomSheet = new Theme(data: theme, child: bottomSheet); 95 | } 96 | 97 | return bottomSheet; 98 | } 99 | } 100 | 101 | class _PickerComponent extends StatefulWidget { 102 | _PickerComponent({ 103 | Key key, 104 | this.initialProvince, 105 | this.initialCity, 106 | this.initialTown, 107 | @required this.route, 108 | this.onChanged, 109 | }); 110 | 111 | final String initialProvince, initialCity, initialTown; 112 | final DateChangedCallback onChanged; 113 | final _PickerRoute route; 114 | 115 | @override 116 | State createState() => 117 | _PickerState(this.initialProvince, this.initialCity, this.initialTown); 118 | } 119 | 120 | class _PickerState extends State<_PickerComponent> { 121 | String _currentProvince, _currentCity, _currentTown; 122 | var cities = []; 123 | var towns = []; 124 | var provinces = []; 125 | 126 | bool hasTown = true; 127 | 128 | AnimationController controller; 129 | Animation animation; 130 | 131 | FixedExtentScrollController provinceScrollCtrl, 132 | cityScrollCtrl, 133 | townScrollCtrl; 134 | 135 | _PickerState(this._currentProvince, this._currentCity, this._currentTown) { 136 | provinces = Locations.provinces; 137 | hasTown = this._currentTown != null; 138 | 139 | _init(); 140 | } 141 | 142 | @override 143 | Widget build(BuildContext context) { 144 | return new GestureDetector( 145 | child: new AnimatedBuilder( 146 | animation: widget.route.animation, 147 | builder: (BuildContext context, Widget child) { 148 | return new ClipRect( 149 | child: new CustomSingleChildLayout( 150 | delegate: new _BottomPickerLayout(widget.route.animation.value, 151 | showTitleActions: widget.route.showTitleActions), 152 | child: new GestureDetector( 153 | child: Material( 154 | color: Colors.transparent, 155 | child: _renderPickerView(), 156 | ), 157 | ), 158 | ), 159 | ); 160 | }, 161 | ), 162 | ); 163 | } 164 | 165 | _init() { 166 | int pindex = 0; 167 | int cindex = 0; 168 | int tindex = 0; 169 | pindex = provinces.indexWhere((p) => p.indexOf(_currentProvince) >= 0); 170 | pindex = pindex >= 0 ? pindex : 0; 171 | String selectedProvince = provinces[pindex]; 172 | if (selectedProvince != null) { 173 | _currentProvince = selectedProvince; 174 | 175 | cities = Locations.getCities(selectedProvince); 176 | if (!hasTown && cities.length == 1) { 177 | //不显示县城的时候 直辖市显示 areaList 178 | cities = cities[0]['areaList'].map((c) => {'name': c}).toList(); 179 | } 180 | cindex = cities.indexWhere((c) => c['name'].indexOf(_currentCity) >= 0); 181 | cindex = cindex >= 0 ? cindex : 0; 182 | _currentCity = cities[cindex]['name']; 183 | 184 | if (hasTown) { 185 | towns = Locations.getTowns(_currentCity, cities); 186 | tindex = towns.indexWhere((t) => t.indexOf(_currentTown) >= 0) ?? 0; 187 | tindex = tindex >= 0 ? tindex : 0; 188 | _currentTown = towns[tindex]; 189 | } 190 | } 191 | 192 | provinceScrollCtrl = new FixedExtentScrollController(initialItem: pindex); 193 | cityScrollCtrl = new FixedExtentScrollController(initialItem: cindex); 194 | townScrollCtrl = new FixedExtentScrollController(initialItem: tindex); 195 | } 196 | 197 | void _setProvince(int index) { 198 | String selectedProvince = provinces[index]; 199 | if (_currentProvince != selectedProvince) { 200 | setState(() { 201 | _currentProvince = selectedProvince; 202 | 203 | cities = Locations.getCities(selectedProvince); 204 | if (!hasTown && cities.length == 1) { 205 | //不显示县城的时候 直辖市显示 areaList 206 | cities = cities[0]['areaList'].map((c) => {'name': c}).toList(); 207 | } 208 | _currentCity = cities[0]['name']; 209 | cityScrollCtrl.jumpToItem(0); 210 | if (hasTown) { 211 | towns = Locations.getTowns(cities[0]['name'], cities); 212 | _currentTown = towns[0]; 213 | townScrollCtrl.jumpToItem(0); 214 | } 215 | }); 216 | 217 | _notifyLocationChanged(); 218 | } 219 | } 220 | 221 | void _setCity(int index) { 222 | index = cities.length > index ? index : cities.length - 1; 223 | String selectedCity = cities[index]['name']; 224 | if (_currentCity != selectedCity) { 225 | if (hasTown) { 226 | setState(() { 227 | towns = Locations.getTowns(selectedCity, cities); 228 | townScrollCtrl.jumpToItem(0); 229 | }); 230 | } 231 | _currentCity = selectedCity; 232 | _notifyLocationChanged(); 233 | } 234 | } 235 | 236 | void _setTown(int index) { 237 | String selectedTown = towns[index]; 238 | if (_currentTown != selectedTown) { 239 | _currentTown = selectedTown; 240 | _notifyLocationChanged(); 241 | } 242 | } 243 | 244 | void _notifyLocationChanged() { 245 | if (widget.onChanged != null) { 246 | widget.onChanged(_currentProvince, _currentCity, _currentTown); 247 | } 248 | } 249 | 250 | double _pickerFontSize(String text) { 251 | double ratio = hasTown ? 0.0 : 2.0; 252 | if (text == null || text.length <= 6) { 253 | return 18.0; 254 | } else if (text.length < 9) { 255 | return 16.0 + ratio; 256 | } else if (text.length < 13) { 257 | return 12.0 + ratio; 258 | } else { 259 | return 10.0 + ratio; 260 | } 261 | } 262 | 263 | Widget _renderPickerView() { 264 | Widget itemView = _renderItemView(); 265 | if (widget.route.showTitleActions) { 266 | return Column( 267 | children: [ 268 | _renderTitleActionsView(), 269 | itemView, 270 | ], 271 | ); 272 | } 273 | return itemView; 274 | } 275 | 276 | Widget _renderItemView() { 277 | return Row( 278 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 279 | children: [ 280 | Expanded( 281 | flex: 1, 282 | child: Container( 283 | padding: EdgeInsets.all(8.0), 284 | height: _kPickerHeight, 285 | decoration: BoxDecoration(color: Colors.white), 286 | child: CupertinoPicker( 287 | backgroundColor: Colors.white, 288 | scrollController: provinceScrollCtrl, 289 | itemExtent: _kPickerItemHeight, 290 | onSelectedItemChanged: (int index) { 291 | _setProvince(index); 292 | }, 293 | children: List.generate(Locations.provinces.length, (int index) { 294 | String text = Locations.provinces[index]; 295 | return Container( 296 | height: _kPickerItemHeight, 297 | alignment: Alignment.center, 298 | child: Text( 299 | '$text', 300 | style: TextStyle( 301 | color: Color(0xFF000046), 302 | fontSize: _pickerFontSize(text)), 303 | textAlign: TextAlign.start, 304 | ), 305 | ); 306 | }), 307 | ), 308 | ), 309 | ), 310 | Expanded( 311 | flex: 1, 312 | child: Container( 313 | padding: EdgeInsets.all(8.0), 314 | height: _kPickerHeight, 315 | decoration: BoxDecoration(color: Colors.white), 316 | child: CupertinoPicker( 317 | backgroundColor: Colors.white, 318 | scrollController: cityScrollCtrl, 319 | itemExtent: _kPickerItemHeight, 320 | onSelectedItemChanged: (int index) { 321 | _setCity(index); 322 | }, 323 | children: List.generate(cities.length, (int index) { 324 | String text = cities[index]['name']; 325 | return Container( 326 | height: _kPickerItemHeight, 327 | alignment: Alignment.center, 328 | child: Text( 329 | '$text', 330 | style: TextStyle( 331 | color: Color(0xFF000046), 332 | fontSize: _pickerFontSize(text)), 333 | textAlign: TextAlign.start, 334 | ), 335 | ); 336 | }), 337 | )), 338 | ), 339 | hasTown 340 | ? Expanded( 341 | flex: 1, 342 | child: Container( 343 | padding: EdgeInsets.all(8.0), 344 | height: _kPickerHeight, 345 | decoration: BoxDecoration(color: Colors.white), 346 | child: CupertinoPicker( 347 | backgroundColor: Colors.white, 348 | scrollController: townScrollCtrl, 349 | itemExtent: _kPickerItemHeight, 350 | onSelectedItemChanged: (int index) { 351 | _setTown(index); 352 | }, 353 | children: List.generate(towns.length, (int index) { 354 | String text = towns[index]; 355 | return Container( 356 | height: _kPickerItemHeight, 357 | alignment: Alignment.center, 358 | child: Text( 359 | "${text}", 360 | style: TextStyle( 361 | color: Color(0xFF000046), 362 | fontSize: _pickerFontSize(text)), 363 | textAlign: TextAlign.start, 364 | ), 365 | ); 366 | }), 367 | )), 368 | ) 369 | : Center() 370 | ], 371 | ); 372 | } 373 | 374 | // Title View 375 | Widget _renderTitleActionsView() { 376 | return Container( 377 | height: _kPickerTitleHeight, 378 | decoration: BoxDecoration(color: Colors.white), 379 | child: Row( 380 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 381 | children: [ 382 | Container( 383 | height: _kPickerTitleHeight, 384 | child: FlatButton( 385 | child: Text( 386 | '取消', 387 | style: TextStyle( 388 | color: Theme.of(context).unselectedWidgetColor, 389 | fontSize: 16.0, 390 | ), 391 | ), 392 | onPressed: () => Navigator.pop(context), 393 | ), 394 | ), 395 | Container( 396 | height: _kPickerTitleHeight, 397 | child: FlatButton( 398 | child: Text( 399 | '确定', 400 | style: TextStyle( 401 | color: Theme.of(context).primaryColor, 402 | fontSize: 16.0, 403 | ), 404 | ), 405 | onPressed: () { 406 | if (widget.route.onConfirm != null) { 407 | widget.route 408 | .onConfirm(_currentProvince, _currentCity, _currentTown); 409 | } 410 | Navigator.pop(context); 411 | }, 412 | ), 413 | ), 414 | ], 415 | ), 416 | ); 417 | } 418 | } 419 | 420 | class _BottomPickerLayout extends SingleChildLayoutDelegate { 421 | _BottomPickerLayout(this.progress, {this.itemCount, this.showTitleActions}); 422 | 423 | final double progress; 424 | final int itemCount; 425 | final bool showTitleActions; 426 | 427 | @override 428 | BoxConstraints getConstraintsForChild(BoxConstraints constraints) { 429 | double maxHeight = _kPickerHeight; 430 | if (showTitleActions) { 431 | maxHeight += _kPickerTitleHeight; 432 | } 433 | 434 | return new BoxConstraints( 435 | minWidth: constraints.maxWidth, 436 | maxWidth: constraints.maxWidth, 437 | minHeight: 0.0, 438 | maxHeight: maxHeight); 439 | } 440 | 441 | @override 442 | Offset getPositionForChild(Size size, Size childSize) { 443 | double height = size.height - childSize.height * progress; 444 | return new Offset(0.0, height); 445 | } 446 | 447 | @override 448 | bool shouldRelayout(_BottomPickerLayout oldDelegate) { 449 | return progress != oldDelegate.progress; 450 | } 451 | } 452 | -------------------------------------------------------------------------------- /lib/generated/i18n.dart: -------------------------------------------------------------------------------- 1 | 2 | import 'dart:async'; 3 | 4 | import 'package:flutter/foundation.dart'; 5 | import 'package:flutter/material.dart'; 6 | // ignore_for_file: non_constant_identifier_names 7 | // ignore_for_file: camel_case_types 8 | // ignore_for_file: prefer_single_quotes 9 | 10 | //This file is automatically generated. DO NOT EDIT, all your changes would be lost. 11 | 12 | class S implements WidgetsLocalizations { 13 | const S(); 14 | 15 | static const GeneratedLocalizationsDelegate delegate = 16 | const GeneratedLocalizationsDelegate(); 17 | 18 | static S of(BuildContext context) => 19 | Localizations.of(context, WidgetsLocalizations); 20 | 21 | @override 22 | TextDirection get textDirection => TextDirection.ltr; 23 | 24 | } 25 | 26 | class en extends S { 27 | const en(); 28 | } 29 | 30 | 31 | class GeneratedLocalizationsDelegate extends LocalizationsDelegate { 32 | const GeneratedLocalizationsDelegate(); 33 | 34 | List get supportedLocales { 35 | return const [ 36 | 37 | const Locale("en", ""), 38 | 39 | ]; 40 | } 41 | 42 | LocaleResolutionCallback resolution({Locale fallback}) { 43 | return (Locale locale, Iterable supported) { 44 | final Locale languageLocale = new Locale(locale.languageCode, ""); 45 | if (supported.contains(locale)) 46 | return locale; 47 | else if (supported.contains(languageLocale)) 48 | return languageLocale; 49 | else { 50 | final Locale fallbackLocale = fallback ?? supported.first; 51 | return fallbackLocale; 52 | } 53 | }; 54 | } 55 | 56 | @override 57 | Future load(Locale locale) { 58 | final String lang = getLang(locale); 59 | switch (lang) { 60 | 61 | case "en": 62 | return new SynchronousFuture(const en()); 63 | 64 | default: 65 | return new SynchronousFuture(const S()); 66 | } 67 | } 68 | 69 | @override 70 | bool isSupported(Locale locale) => supportedLocales.contains(locale); 71 | 72 | @override 73 | bool shouldReload(GeneratedLocalizationsDelegate old) => false; 74 | } 75 | 76 | String getLang(Locale l) => l.countryCode != null && l.countryCode.isEmpty 77 | ? l.languageCode 78 | : l.toString(); 79 | -------------------------------------------------------------------------------- /lib/location.dart: -------------------------------------------------------------------------------- 1 | const locations = [ 2 | { 3 | 'name': '北京市', 4 | 'cityList': [ 5 | { 6 | 'areaList': [ 7 | '东城区', 8 | '西城区', 9 | '崇文区', 10 | '宣武区', 11 | '朝阳区', 12 | '丰台区', 13 | '石景山区', 14 | '海淀区', 15 | '门头沟区', 16 | '房山区', 17 | '通州区', 18 | '顺义区', 19 | '昌平区', 20 | '大兴区', 21 | '怀柔区', 22 | '平谷区', 23 | '密云县', 24 | '延庆县' 25 | ] 26 | } 27 | ] 28 | }, 29 | { 30 | 'name': '天津市', 31 | 'cityList': [ 32 | { 33 | 'areaList': [ 34 | '和平区', 35 | '河东区', 36 | '河西区', 37 | '南开区', 38 | '河北区', 39 | '红桥区', 40 | '塘沽区', 41 | '汉沽区', 42 | '大港区', 43 | '东丽区', 44 | '西青区', 45 | '津南区', 46 | '北辰区', 47 | '武清区', 48 | '宝坻区', 49 | '宁河县', 50 | '静海县', 51 | '蓟县' 52 | ] 53 | } 54 | ] 55 | }, 56 | { 57 | 'name': '河北', 58 | 'cityList': [ 59 | { 60 | 'name': '石家庄市', 61 | 'areaList': [ 62 | '长安区', 63 | '桥东区', 64 | '桥西区', 65 | '新华区', 66 | '井陉矿区', 67 | '裕华区', 68 | '井陉县', 69 | '正定县', 70 | '栾城县', 71 | '行唐县', 72 | '灵寿县', 73 | '高邑县', 74 | '深泽县', 75 | '赞皇县', 76 | '无极县', 77 | '平山县', 78 | '元氏县', 79 | '赵县', 80 | '辛集市', 81 | '藁城市', 82 | '晋州市', 83 | '新乐市', 84 | '鹿泉市' 85 | ] 86 | }, 87 | { 88 | 'name': '唐山市', 89 | 'areaList': [ 90 | '路南区', 91 | '路北区', 92 | '古冶区', 93 | '开平区', 94 | '丰南区', 95 | '丰润区', 96 | '滦 县', 97 | '滦南县', 98 | '乐亭县', 99 | '迁西县', 100 | '玉田县', 101 | '唐海县', 102 | '遵化市', 103 | '迁安市' 104 | ] 105 | }, 106 | { 107 | 'name': '秦皇岛市', 108 | 'areaList': ['海港区', '山海关区', '北戴河区', '青龙满族自治县', '昌黎县', '抚宁县', '卢龙县'] 109 | }, 110 | { 111 | 'name': '邯郸市', 112 | 'areaList': [ 113 | '邯山区', 114 | '丛台区', 115 | '复兴区', 116 | '峰峰矿区', 117 | '邯郸县', 118 | '临漳县', 119 | '成安县', 120 | '大名县', 121 | '涉县', 122 | '磁县', 123 | '肥乡县', 124 | '永年县', 125 | '邱县', 126 | '鸡泽县', 127 | '广平县', 128 | '馆陶县', 129 | '魏县', 130 | '曲周县', 131 | '武安市' 132 | ] 133 | }, 134 | { 135 | 'name': '邢台市', 136 | 'areaList': [ 137 | '桥东区', 138 | '桥西区', 139 | '邢台县', 140 | '临城县', 141 | '内丘县', 142 | '柏乡县', 143 | '隆尧县', 144 | '任 县', 145 | '南和县', 146 | '宁晋县', 147 | '巨鹿县', 148 | '新河县', 149 | '广宗县', 150 | '平乡县', 151 | '威县', 152 | '清河县', 153 | '临西县', 154 | '南宫市', 155 | '沙河市' 156 | ] 157 | }, 158 | { 159 | 'name': '保定市', 160 | 'areaList': [ 161 | '新市区', 162 | '北市区', 163 | '南市区', 164 | '满城县', 165 | '清苑县', 166 | '涞水县', 167 | '阜平县', 168 | '徐水县', 169 | '定兴县', 170 | '唐 县', 171 | '高阳县', 172 | '容城县', 173 | '涞源县', 174 | '望都县', 175 | '安新县', 176 | '易县', 177 | '曲阳县', 178 | '蠡县', 179 | '顺平县', 180 | '博野县', 181 | '雄县', 182 | '涿州市', 183 | '定州市', 184 | '安国市', 185 | '高碑店市' 186 | ] 187 | }, 188 | { 189 | 'name': '张家口市', 190 | 'areaList': [ 191 | '桥东区', 192 | '桥西区', 193 | '宣化区', 194 | '下花园区', 195 | '宣化县', 196 | '张北县', 197 | '康保县', 198 | '沽源县', 199 | '尚义县', 200 | '蔚 县', 201 | '阳原县', 202 | '怀安县', 203 | '万全县', 204 | '怀来县', 205 | '涿鹿县', 206 | '赤城县', 207 | '崇礼县' 208 | ] 209 | }, 210 | { 211 | 'name': '承德市', 212 | 'areaList': [ 213 | '双桥区', 214 | '双滦区', 215 | '鹰手营子矿区', 216 | '承德县', 217 | '兴隆县', 218 | '平泉县', 219 | '滦平县', 220 | '隆化县', 221 | '丰宁满族自治县', 222 | '宽城满族自治县', 223 | '围场满族蒙古族自治县' 224 | ] 225 | }, 226 | { 227 | 'name': '沧州市', 228 | 'areaList': [ 229 | '新华区', 230 | '运河区', 231 | '沧 县', 232 | '青县', 233 | '东光县', 234 | '海兴县', 235 | '盐山县', 236 | '肃宁县', 237 | '南皮县', 238 | '吴桥县', 239 | '献县', 240 | '孟村回族自治县', 241 | '泊头市', 242 | '任丘市', 243 | '黄骅市', 244 | '河间市' 245 | ] 246 | }, 247 | { 248 | 'name': '廊坊市', 249 | 'areaList': [ 250 | '安次区', 251 | '广阳区', 252 | '固安县', 253 | '永清县', 254 | '香河县', 255 | '大城县', 256 | '文安县', 257 | '大厂回族自治县', 258 | '霸州市', 259 | '三河市' 260 | ] 261 | }, 262 | { 263 | 'name': '衡水市', 264 | 'areaList': [ 265 | '桃城区', 266 | '枣强县', 267 | '武邑县', 268 | '武强县', 269 | '饶阳县', 270 | '安平县', 271 | '故城县', 272 | '景县', 273 | '阜城县', 274 | '冀州市', 275 | '深州市' 276 | ] 277 | } 278 | ] 279 | }, 280 | { 281 | 'name': '山西', 282 | 'cityList': [ 283 | { 284 | 'name': '太原市', 285 | 'areaList': [ 286 | '小店区', 287 | '迎泽区', 288 | '杏花岭区', 289 | '尖草坪区', 290 | '万柏林区', 291 | '晋源区', 292 | '清徐县', 293 | '阳曲县', 294 | '娄烦县', 295 | '古交市' 296 | ] 297 | }, 298 | { 299 | 'name': '大同市', 300 | 'areaList': [ 301 | '城区', 302 | '矿区', 303 | '南郊区', 304 | '新荣区', 305 | '阳高县', 306 | '天镇县', 307 | '广灵县', 308 | '灵丘县', 309 | '浑源县', 310 | '左云县', 311 | '大同县' 312 | ] 313 | }, 314 | { 315 | 'name': '阳泉市', 316 | 'areaList': ['城区', '矿区', '郊区', '平定县', '盂县'] 317 | }, 318 | { 319 | 'name': '长治市', 320 | 'areaList': [ 321 | '城区', 322 | '郊区', 323 | '长治县', 324 | '襄垣县', 325 | '屯留县', 326 | '平顺县', 327 | '黎城县', 328 | '壶关县', 329 | '长子县', 330 | '武乡县', 331 | '沁县', 332 | '沁源县', 333 | '潞城市' 334 | ] 335 | }, 336 | { 337 | 'name': '晋城市', 338 | 'areaList': ['城区', '沁水县', '阳城县', '陵川县', '泽州县', '高平市'] 339 | }, 340 | { 341 | 'name': '朔州市', 342 | 'areaList': ['朔城区', '平鲁区', '山阴县', '应县', '右玉县', '怀仁县'] 343 | }, 344 | { 345 | 'name': '晋中市', 346 | 'areaList': [ 347 | '榆次区', 348 | '榆社县', 349 | '左权县', 350 | '和顺县', 351 | '昔阳县', 352 | '寿阳县', 353 | '太谷县', 354 | '祁县', 355 | '平遥县', 356 | '灵石县', 357 | '介休市' 358 | ] 359 | }, 360 | { 361 | 'name': '运城市', 362 | 'areaList': [ 363 | '盐湖区', 364 | '临猗县', 365 | '万荣县', 366 | '闻喜县', 367 | '稷山县', 368 | '新绛县', 369 | '绛 县', 370 | '垣曲县', 371 | '夏县', 372 | '平陆县', 373 | '芮城县', 374 | '永济市', 375 | '河津市' 376 | ] 377 | }, 378 | { 379 | 'name': '忻州市', 380 | 'areaList': [ 381 | '忻府区', 382 | '定襄县', 383 | '五台县', 384 | '代县', 385 | '繁峙县', 386 | '宁武县', 387 | '静乐县', 388 | '神池县', 389 | '五寨县', 390 | '岢岚县', 391 | '河曲县', 392 | '保德县', 393 | '偏关县', 394 | '原平市' 395 | ] 396 | }, 397 | { 398 | 'name': '临汾市', 399 | 'areaList': [ 400 | '尧都区', 401 | '曲沃县', 402 | '翼城县', 403 | '襄汾县', 404 | '洪洞县', 405 | '古县', 406 | '安泽县', 407 | '浮山县', 408 | '吉县', 409 | '乡宁县', 410 | '大宁县', 411 | '隰县', 412 | '永和县', 413 | '蒲县', 414 | '汾西县', 415 | '侯马市', 416 | '霍州市' 417 | ] 418 | }, 419 | { 420 | 'name': '吕梁市', 421 | 'areaList': [ 422 | '离石区', 423 | '文水县', 424 | '交城县', 425 | '兴县', 426 | '临县', 427 | '柳林县', 428 | '石楼县', 429 | '岚县', 430 | '方山县', 431 | '中阳县', 432 | '交口县', 433 | '孝义市', 434 | '汾阳市' 435 | ] 436 | } 437 | ] 438 | }, 439 | { 440 | 'name': '内蒙古', 441 | 'cityList': [ 442 | { 443 | 'name': '呼和浩特市', 444 | 'areaList': [ 445 | '新城区', 446 | '回民区', 447 | '玉泉区', 448 | '赛罕区', 449 | '土默特左旗', 450 | '托克托县', 451 | '和林格尔县', 452 | '清水河县', 453 | '武川县' 454 | ] 455 | }, 456 | { 457 | 'name': '包头市', 458 | 'areaList': [ 459 | '东河区', 460 | '昆都仑区', 461 | '青山区', 462 | '石拐区', 463 | '白云矿区', 464 | '九原区', 465 | '土默特右旗', 466 | '固阳县', 467 | '达尔罕茂明安联合旗' 468 | ] 469 | }, 470 | { 471 | 'name': '乌海市', 472 | 'areaList': ['海勃湾区', '海南区', '乌达区'] 473 | }, 474 | { 475 | 'name': '赤峰市', 476 | 'areaList': [ 477 | '红山区', 478 | '元宝山区', 479 | '松山区', 480 | '阿鲁科尔沁旗', 481 | '巴林左旗', 482 | '巴林右旗', 483 | '林西县', 484 | '克什克腾旗', 485 | '翁牛特旗', 486 | '喀喇沁旗', 487 | '宁城县', 488 | '敖汉旗' 489 | ] 490 | }, 491 | { 492 | 'name': '通辽市', 493 | 'areaList': [ 494 | '科尔沁区', 495 | '科尔沁左翼中旗', 496 | '科尔沁左翼后旗', 497 | '开鲁县', 498 | '库伦旗', 499 | '奈曼旗', 500 | '扎鲁特旗', 501 | '霍林郭勒市' 502 | ] 503 | }, 504 | { 505 | 'name': '鄂尔多斯市', 506 | 'areaList': [ 507 | '东胜区', 508 | '达拉特旗', 509 | '准格尔旗', 510 | '鄂托克前旗', 511 | '鄂托克旗', 512 | '杭锦旗', 513 | '乌审旗', 514 | '伊金霍洛旗' 515 | ] 516 | }, 517 | { 518 | 'name': '呼伦贝尔市', 519 | 'areaList': [ 520 | '海拉尔区', 521 | '阿荣旗', 522 | '莫力达瓦达斡尔族自治旗', 523 | '鄂伦春自治旗', 524 | '鄂温克族自治旗', 525 | '陈巴尔虎旗', 526 | '新巴尔虎左旗', 527 | '新巴尔虎右旗', 528 | '满洲里市', 529 | '牙克石市', 530 | '扎兰屯市', 531 | '额尔古纳市', 532 | '根河市' 533 | ] 534 | }, 535 | { 536 | 'name': '巴彦淖尔市', 537 | 'areaList': ['临河区', '五原县', '磴口县', '乌拉特前旗', '乌拉特中旗', '乌拉特后旗', '杭锦后旗'] 538 | }, 539 | { 540 | 'name': '乌兰察布市', 541 | 'areaList': [ 542 | '集宁区', 543 | '卓资县', 544 | '化德县', 545 | '商都县', 546 | '兴和县', 547 | '凉城县', 548 | '察哈尔右翼前旗', 549 | '察哈尔右翼中旗', 550 | '察哈尔右翼后旗', 551 | '四子王旗', 552 | '丰镇市' 553 | ] 554 | }, 555 | { 556 | 'name': '兴安盟', 557 | 'areaList': ['乌兰浩特市', '阿尔山市', '科尔沁右翼前旗', '科尔沁右翼中旗', '扎赉特旗', '突泉县'] 558 | }, 559 | { 560 | 'name': '锡林郭勒盟', 561 | 'areaList': [ 562 | '二连浩特市', 563 | '锡林浩特市', 564 | '阿巴嘎旗', 565 | '苏尼特左旗', 566 | '苏尼特右旗', 567 | '东乌珠穆沁旗', 568 | '西乌珠穆沁旗', 569 | '太仆寺旗', 570 | '镶黄旗', 571 | '正镶白旗', 572 | '正蓝旗', 573 | '多伦县' 574 | ] 575 | }, 576 | { 577 | 'name': '阿拉善盟', 578 | 'areaList': ['阿拉善左旗', '阿拉善右旗', '额济纳旗'] 579 | } 580 | ] 581 | }, 582 | { 583 | 'name': '辽宁', 584 | 'cityList': [ 585 | { 586 | 'name': '沈阳市', 587 | 'areaList': [ 588 | '和平区', 589 | '沈河区', 590 | '大东区', 591 | '皇姑区', 592 | '铁西区', 593 | '苏家屯区', 594 | '东陵区', 595 | '新城子区', 596 | '于洪区', 597 | '辽中县', 598 | '康平县', 599 | '法库县', 600 | '新民市' 601 | ] 602 | }, 603 | { 604 | 'name': '大连市', 605 | 'areaList': [ 606 | '中山区', 607 | '西岗区', 608 | '沙河口区', 609 | '甘井子区', 610 | '旅顺口区', 611 | '金州区', 612 | '长海县', 613 | '瓦房店市', 614 | '普兰店市', 615 | '庄河市' 616 | ] 617 | }, 618 | { 619 | 'name': '鞍山市', 620 | 'areaList': ['铁东区', '铁西区', '立山区', '千山区', '台安县', '岫岩满族自治县', '海城市'] 621 | }, 622 | { 623 | 'name': '抚顺市', 624 | 'areaList': ['新抚区', '东洲区', '望花区', '顺城区', '抚顺县', '新宾满族自治县', '清原满族自治县'] 625 | }, 626 | { 627 | 'name': '本溪市', 628 | 'areaList': ['平山区', '溪湖区', '明山区', '南芬区', '本溪满族自治县', '桓仁满族自治县'] 629 | }, 630 | { 631 | 'name': '丹东市', 632 | 'areaList': ['元宝区', '振兴区', '振安区', '宽甸满族自治县', '东港市', '凤城市'] 633 | }, 634 | { 635 | 'name': '锦州市', 636 | 'areaList': ['古塔区', '凌河区', '太和区', '黑山县', '义 县', '凌海市', '北宁市'] 637 | }, 638 | { 639 | 'name': '营口市', 640 | 'areaList': ['站前区', '西市区', '鲅鱼圈区', '老边区', '盖州市', '大石桥市'] 641 | }, 642 | { 643 | 'name': '阜新市', 644 | 'areaList': ['海州区', '新邱区', '太平区', '清河门区', '细河区', '阜新蒙古族自治县', '彰武县'] 645 | }, 646 | { 647 | 'name': '辽阳市', 648 | 'areaList': ['白塔区', '文圣区', '宏伟区', '弓长岭区', '太子河区', '辽阳县', '灯塔市'] 649 | }, 650 | { 651 | 'name': '盘锦市', 652 | 'areaList': ['双台子区', '兴隆台区', '大洼县', '盘山县'] 653 | }, 654 | { 655 | 'name': '铁岭市', 656 | 'areaList': ['银州区', '清河区', '铁岭县', '西丰县', '昌图县', '调兵山市', '开原市'] 657 | }, 658 | { 659 | 'name': '朝阳市', 660 | 'areaList': ['双塔区', '龙城区', '朝阳县', '建平县', '喀喇沁左翼蒙古族自治县', '北票市', '凌源市'] 661 | }, 662 | { 663 | 'name': '葫芦岛市', 664 | 'areaList': ['连山区', '龙港区', '南票区', '绥中县', '建昌县', '兴城市'] 665 | } 666 | ] 667 | }, 668 | { 669 | 'name': '吉林', 670 | 'cityList': [ 671 | { 672 | 'name': '长春市', 673 | 'areaList': [ 674 | '南关区', 675 | '宽城区', 676 | '朝阳区', 677 | '二道区', 678 | '绿园区', 679 | '双阳区', 680 | '农安县', 681 | '九台市', 682 | '榆树市', 683 | '德惠市' 684 | ] 685 | }, 686 | { 687 | 'name': '吉林市', 688 | 'areaList': [ 689 | '昌邑区', 690 | '龙潭区', 691 | '船营区', 692 | '丰满区', 693 | '永吉县', 694 | '蛟河市', 695 | '桦甸市', 696 | '舒兰市', 697 | '磐石市' 698 | ] 699 | }, 700 | { 701 | 'name': '四平市', 702 | 'areaList': ['铁西区', '铁东区', '梨树县', '伊通满族自治县', '公主岭市', '双辽市'] 703 | }, 704 | { 705 | 'name': '辽源市', 706 | 'areaList': ['龙山区', '西安区', '东丰县', '东辽县'] 707 | }, 708 | { 709 | 'name': '通化市', 710 | 'areaList': ['东昌区', '二道江区', '通化县', '辉南县', '柳河县', '梅河口市', '集安市'] 711 | }, 712 | { 713 | 'name': '白山市', 714 | 'areaList': ['八道江区', '抚松县', '靖宇县', '长白朝鲜族自治县', '江源县', '临江市'] 715 | }, 716 | { 717 | 'name': '松原市', 718 | 'areaList': ['宁江区', '前郭尔罗斯蒙古族自治县', '长岭县', '乾安县', '扶余县'] 719 | }, 720 | { 721 | 'name': '白城市', 722 | 'areaList': ['洮北区', '镇赉县', '通榆县', '洮南市', '大安市'] 723 | }, 724 | { 725 | 'name': '延边朝鲜族自治州', 726 | 'areaList': ['延吉市', '图们市', '敦化市', '珲春市', '龙井市', '和龙市', '汪清县', '安图县'] 727 | } 728 | ] 729 | }, 730 | { 731 | 'name': '黑龙江', 732 | 'cityList': [ 733 | { 734 | 'name': '哈尔滨市', 735 | 'areaList': [ 736 | '道里区', 737 | '南岗区', 738 | '道外区', 739 | '香坊区', 740 | '动力区', 741 | '平房区', 742 | '松北区', 743 | '呼兰区', 744 | '依兰县', 745 | '方正县', 746 | '宾县', 747 | '巴彦县', 748 | '木兰县', 749 | '通河县', 750 | '延寿县', 751 | '阿城市', 752 | '双城市', 753 | '尚志市', 754 | '五常市' 755 | ] 756 | }, 757 | { 758 | 'name': '齐齐哈尔市', 759 | 'areaList': [ 760 | '龙沙区', 761 | '建华区', 762 | '铁锋区', 763 | '昂昂溪区', 764 | '富拉尔基区', 765 | '碾子山区', 766 | '梅里斯达斡尔族区', 767 | '龙江县', 768 | '依安县', 769 | '泰来县', 770 | '甘南县', 771 | '富裕县', 772 | '克山县', 773 | '克东县', 774 | '拜泉县', 775 | '讷河市' 776 | ] 777 | }, 778 | { 779 | 'name': '鸡西市', 780 | 'areaList': [ 781 | '鸡冠区', 782 | '恒山区', 783 | '滴道区', 784 | '梨树区', 785 | '城子河区', 786 | '麻山区', 787 | '鸡东县', 788 | '虎林市', 789 | '密山市' 790 | ] 791 | }, 792 | { 793 | 'name': '鹤岗市', 794 | 'areaList': ['向阳区', '工农区', '南山区', '兴安区', '东山区', '兴山区', '萝北县', '绥滨县'] 795 | }, 796 | { 797 | 'name': '双鸭山市', 798 | 'areaList': ['尖山区', '岭东区', '四方台区', '宝山区', '集贤县', '友谊县', '宝清县', '饶河县'] 799 | }, 800 | { 801 | 'name': '大庆市', 802 | 'areaList': [ 803 | '萨尔图区', 804 | '龙凤区', 805 | '让胡路区', 806 | '红岗区', 807 | '大同区', 808 | '肇州县', 809 | '肇源县', 810 | '林甸县', 811 | '杜尔伯特蒙古族自治县' 812 | ] 813 | }, 814 | { 815 | 'name': '伊春市', 816 | 'areaList': [ 817 | '伊春区', 818 | '南岔区', 819 | '友好区', 820 | '西林区', 821 | '翠峦区', 822 | '新青区', 823 | '美溪区', 824 | '金山屯区', 825 | '五营区', 826 | '乌马河区', 827 | '汤旺河区', 828 | '带岭区', 829 | '乌伊岭区', 830 | '红星区', 831 | '上甘岭区', 832 | '嘉荫县', 833 | '铁力市' 834 | ] 835 | }, 836 | { 837 | 'name': '佳木斯市', 838 | 'areaList': [ 839 | '永红区', 840 | '向阳区', 841 | '前进区', 842 | '东风区', 843 | '郊区', 844 | '桦南县', 845 | '桦川县', 846 | '汤原县', 847 | '抚远县', 848 | '同江市', 849 | '富锦市' 850 | ] 851 | }, 852 | { 853 | 'name': '七台河市', 854 | 'areaList': ['新兴区', '桃山区', '茄子河区', '勃利县'] 855 | }, 856 | { 857 | 'name': '牡丹江市', 858 | 'areaList': [ 859 | '东安区', 860 | '阳明区', 861 | '爱民区', 862 | '西安区', 863 | '东宁县', 864 | '林口县', 865 | '绥芬河市', 866 | '海林市', 867 | '宁安市', 868 | '穆棱市' 869 | ] 870 | }, 871 | { 872 | 'name': '黑河市', 873 | 'areaList': ['爱辉区', '嫩江县', '逊克县', '孙吴县', '北安市', '五大连池市'] 874 | }, 875 | { 876 | 'name': '绥化市', 877 | 'areaList': [ 878 | '北林区', 879 | '望奎县', 880 | '兰西县', 881 | '青冈县', 882 | '庆安县', 883 | '明水县', 884 | '绥棱县', 885 | '安达市', 886 | '肇东市', 887 | '海伦市' 888 | ] 889 | }, 890 | { 891 | 'name': '大兴安岭地区', 892 | 'areaList': ['呼玛县', '塔河县', '漠河县'] 893 | } 894 | ] 895 | }, 896 | { 897 | 'name': '上海市', 898 | 'cityList': [ 899 | { 900 | 'areaList': [ 901 | '黄浦区', 902 | '卢湾区', 903 | '徐汇区', 904 | '长宁区', 905 | '静安区', 906 | '普陀区', 907 | '闸北区', 908 | '虹口区', 909 | '杨浦区', 910 | '闵行区', 911 | '宝山区', 912 | '嘉定区', 913 | '浦东新区', 914 | '金山区', 915 | '松江区', 916 | '青浦区', 917 | '南汇区', 918 | '奉贤区', 919 | '崇明县' 920 | ] 921 | } 922 | ] 923 | }, 924 | { 925 | 'name': '江苏', 926 | 'cityList': [ 927 | { 928 | 'name': '南京市', 929 | 'areaList': [ 930 | '玄武区', 931 | '白下区', 932 | '秦淮区', 933 | '建邺区', 934 | '鼓楼区', 935 | '下关区', 936 | '浦口区', 937 | '栖霞区', 938 | '雨花台区', 939 | '江宁区', 940 | '六合区', 941 | '溧水县', 942 | '高淳县' 943 | ] 944 | }, 945 | { 946 | 'name': '无锡市', 947 | 'areaList': ['崇安区', '南长区', '北塘区', '锡山区', '惠山区', '滨湖区', '江阴市', '宜兴市'] 948 | }, 949 | { 950 | 'name': '徐州市', 951 | 'areaList': [ 952 | '鼓楼区', 953 | '云龙区', 954 | '九里区', 955 | '贾汪区', 956 | '泉山区', 957 | '丰 县', 958 | '沛 县', 959 | '铜山县', 960 | '睢宁县', 961 | '新沂市', 962 | '邳州市' 963 | ] 964 | }, 965 | { 966 | 'name': '常州市', 967 | 'areaList': ['天宁区', '钟楼区', '戚墅堰区', '新北区', '武进区', '溧阳市', '金坛市'] 968 | }, 969 | { 970 | 'name': '苏州市', 971 | 'areaList': [ 972 | '沧浪区', 973 | '平江区', 974 | '金阊区', 975 | '虎丘区', 976 | '吴中区', 977 | '相城区', 978 | '常熟市', 979 | '张家港市', 980 | '昆山市', 981 | '吴江市', 982 | '太仓市' 983 | ] 984 | }, 985 | { 986 | 'name': '南通市', 987 | 'areaList': ['崇川区', '港闸区', '海安县', '如东县', '启东市', '如皋市', '通州市', '海门市'] 988 | }, 989 | { 990 | 'name': '连云港市', 991 | 'areaList': ['连云区', '新浦区', '海州区', '赣榆县', '东海县', '灌云县', '灌南县'] 992 | }, 993 | { 994 | 'name': '淮安市', 995 | 'areaList': ['清河区', '楚州区', '淮阴区', '清浦区', '涟水县', '洪泽县', '盱眙县', '金湖县'] 996 | }, 997 | { 998 | 'name': '盐城市', 999 | 'areaList': [ 1000 | '亭湖区', 1001 | '盐都区', 1002 | '响水县', 1003 | '滨海县', 1004 | '阜宁县', 1005 | '射阳县', 1006 | '建湖县', 1007 | '东台市', 1008 | '大丰市' 1009 | ] 1010 | }, 1011 | { 1012 | 'name': '扬州市', 1013 | 'areaList': ['广陵区', '邗江区', '郊 区', '宝应县', '仪征市', '高邮市', '江都市'] 1014 | }, 1015 | { 1016 | 'name': '镇江市', 1017 | 'areaList': ['京口区', '润州区', '丹徒区', '丹阳市', '扬中市', '句容市'] 1018 | }, 1019 | { 1020 | 'name': '泰州市', 1021 | 'areaList': ['海陵区', '高港区', '兴化市', '靖江市', '泰兴市', '姜堰市'] 1022 | }, 1023 | { 1024 | 'name': '宿迁市', 1025 | 'areaList': ['宿城区', '宿豫区', '沭阳县', '泗阳县', '泗洪县'] 1026 | } 1027 | ] 1028 | }, 1029 | { 1030 | 'name': '浙江', 1031 | 'cityList': [ 1032 | { 1033 | 'name': '杭州市', 1034 | 'areaList': [ 1035 | '上城区', 1036 | '下城区', 1037 | '江干区', 1038 | '拱墅区', 1039 | '西湖区', 1040 | '滨江区', 1041 | '萧山区', 1042 | '余杭区', 1043 | '桐庐县', 1044 | '淳安县', 1045 | '建德市', 1046 | '富阳区', 1047 | '临安市' 1048 | ] 1049 | }, 1050 | { 1051 | 'name': '宁波市', 1052 | 'areaList': [ 1053 | '海曙区', 1054 | '江东区', 1055 | '江北区', 1056 | '北仑区', 1057 | '镇海区', 1058 | '鄞州区', 1059 | '象山县', 1060 | '宁海县', 1061 | '余姚市', 1062 | '慈溪市', 1063 | '奉化市' 1064 | ] 1065 | }, 1066 | { 1067 | 'name': '温州市', 1068 | 'areaList': [ 1069 | '鹿城区', 1070 | '龙湾区', 1071 | '瓯海区', 1072 | '洞头县', 1073 | '永嘉县', 1074 | '平阳县', 1075 | '苍南县', 1076 | '文成县', 1077 | '泰顺县', 1078 | '瑞安市', 1079 | '乐清市' 1080 | ] 1081 | }, 1082 | { 1083 | 'name': '嘉兴市', 1084 | 'areaList': ['秀城区', '秀洲区', '嘉善县', '海盐县', '海宁市', '平湖市', '桐乡市'] 1085 | }, 1086 | { 1087 | 'name': '湖州市', 1088 | 'areaList': ['吴兴区', '南浔区', '德清县', '长兴县', '安吉县'] 1089 | }, 1090 | { 1091 | 'name': '绍兴市', 1092 | 'areaList': ['越城区', '柯桥区', '新昌县', '诸暨市', '上虞区', '嵊州市'] 1093 | }, 1094 | { 1095 | 'name': '金华市', 1096 | 'areaList': [ 1097 | '婺城区', 1098 | '金东区', 1099 | '武义县', 1100 | '浦江县', 1101 | '磐安县', 1102 | '兰溪市', 1103 | '义乌市', 1104 | '东阳市', 1105 | '永康市' 1106 | ] 1107 | }, 1108 | { 1109 | 'name': '衢州市', 1110 | 'areaList': ['柯城区', '衢江区', '常山县', '开化县', '龙游县', '江山市'] 1111 | }, 1112 | { 1113 | 'name': '舟山市', 1114 | 'areaList': ['定海区', '普陀区', '岱山县', '嵊泗县'] 1115 | }, 1116 | { 1117 | 'name': '台州市', 1118 | 'areaList': [ 1119 | '椒江区', 1120 | '黄岩区', 1121 | '路桥区', 1122 | '玉环县', 1123 | '三门县', 1124 | '天台县', 1125 | '仙居县', 1126 | '温岭市', 1127 | '临海市' 1128 | ] 1129 | }, 1130 | { 1131 | 'name': '丽水市', 1132 | 'areaList': [ 1133 | '莲都区', 1134 | '青田县', 1135 | '缙云县', 1136 | '遂昌县', 1137 | '松阳县', 1138 | '云和县', 1139 | '庆元县', 1140 | '景宁畲族自治县', 1141 | '龙泉市' 1142 | ] 1143 | } 1144 | ] 1145 | }, 1146 | { 1147 | 'name': '安徽', 1148 | 'cityList': [ 1149 | { 1150 | 'name': '合肥市', 1151 | 'areaList': ['瑶海区', '庐阳区', '蜀山区', '包河区', '长丰县', '肥东县', '肥西县'] 1152 | }, 1153 | { 1154 | 'name': '芜湖市', 1155 | 'areaList': ['镜湖区', '马塘区', '新芜区', '鸠江区', '芜湖县', '繁昌县', '南陵县'] 1156 | }, 1157 | { 1158 | 'name': '蚌埠市', 1159 | 'areaList': ['龙子湖区', '蚌山区', '禹会区', '淮上区', '怀远县', '五河县', '固镇县'] 1160 | }, 1161 | { 1162 | 'name': '淮南市', 1163 | 'areaList': ['大通区', '田家庵区', '谢家集区', '八公山区', '潘集区', '凤台县'] 1164 | }, 1165 | { 1166 | 'name': '马鞍山市', 1167 | 'areaList': ['金家庄区', '花山区', '雨山区', '当涂县'] 1168 | }, 1169 | { 1170 | 'name': '淮北市', 1171 | 'areaList': ['杜集区', '相山区', '烈山区', '濉溪县'] 1172 | }, 1173 | { 1174 | 'name': '铜陵市', 1175 | 'areaList': ['铜官山区', '狮子山区', '郊 区', '铜陵县'] 1176 | }, 1177 | { 1178 | 'name': '安庆市', 1179 | 'areaList': [ 1180 | '迎江区', 1181 | '大观区', 1182 | '郊 区', 1183 | '怀宁县', 1184 | '枞阳县', 1185 | '潜山县', 1186 | '太湖县', 1187 | '宿松县', 1188 | '望江县', 1189 | '岳西县', 1190 | '桐城市' 1191 | ] 1192 | }, 1193 | { 1194 | 'name': '黄山市', 1195 | 'areaList': ['屯溪区', '黄山区', '徽州区', '歙 县', '休宁县', '黟 县', '祁门县'] 1196 | }, 1197 | { 1198 | 'name': '滁州市', 1199 | 'areaList': ['琅琊区', '南谯区', '来安县', '全椒县', '定远县', '凤阳县', '天长市', '明光市'] 1200 | }, 1201 | { 1202 | 'name': '阜阳市', 1203 | 'areaList': ['颍州区', '颍东区', '颍泉区', '临泉县', '太和县', '阜南县', '颍上县', '界首市'] 1204 | }, 1205 | { 1206 | 'name': '宿州市', 1207 | 'areaList': ['墉桥区', '砀山县', '萧 县', '灵璧县', '泗 县'] 1208 | }, 1209 | { 1210 | 'name': '巢湖市', 1211 | 'areaList': ['居巢区', '庐江县', '无为县', '含山县', '和 县'] 1212 | }, 1213 | { 1214 | 'name': '六安市', 1215 | 'areaList': ['金安区', '裕安区', '寿 县', '霍邱县', '舒城县', '金寨县', '霍山县'] 1216 | }, 1217 | { 1218 | 'name': '亳州市', 1219 | 'areaList': ['谯城区', '涡阳县', '蒙城县', '利辛县'] 1220 | }, 1221 | { 1222 | 'name': '池州市', 1223 | 'areaList': ['贵池区', '东至县', '石台县', '青阳县'] 1224 | }, 1225 | { 1226 | 'name': '宣城市', 1227 | 'areaList': ['宣州区', '郎溪县', '广德县', '泾 县', '绩溪县', '旌德县', '宁国市'] 1228 | } 1229 | ] 1230 | }, 1231 | { 1232 | 'name': '福建', 1233 | 'cityList': [ 1234 | { 1235 | 'name': '福州市', 1236 | 'areaList': [ 1237 | '鼓楼区', 1238 | '台江区', 1239 | '仓山区', 1240 | '马尾区', 1241 | '晋安区', 1242 | '闽侯县', 1243 | '连江县', 1244 | '罗源县', 1245 | '闽清县', 1246 | '永泰县', 1247 | '平潭县', 1248 | '福清市', 1249 | '长乐市' 1250 | ] 1251 | }, 1252 | { 1253 | 'name': '厦门市', 1254 | 'areaList': ['思明区', '海沧区', '湖里区', '集美区', '同安区', '翔安区'] 1255 | }, 1256 | { 1257 | 'name': '莆田市', 1258 | 'areaList': ['城厢区', '涵江区', '荔城区', '秀屿区', '仙游县'] 1259 | }, 1260 | { 1261 | 'name': '三明市', 1262 | 'areaList': [ 1263 | '梅列区', 1264 | '三元区', 1265 | '明溪县', 1266 | '清流县', 1267 | '宁化县', 1268 | '大田县', 1269 | '尤溪县', 1270 | '沙 县', 1271 | '将乐县', 1272 | '泰宁县', 1273 | '建宁县', 1274 | '永安市' 1275 | ] 1276 | }, 1277 | { 1278 | 'name': '泉州市', 1279 | 'areaList': [ 1280 | '鲤城区', 1281 | '丰泽区', 1282 | '洛江区', 1283 | '泉港区', 1284 | '惠安县', 1285 | '安溪县', 1286 | '永春县', 1287 | '德化县', 1288 | '金门县', 1289 | '石狮市', 1290 | '晋江市', 1291 | '南安市' 1292 | ] 1293 | }, 1294 | { 1295 | 'name': '漳州市', 1296 | 'areaList': [ 1297 | '芗城区', 1298 | '龙文区', 1299 | '云霄县', 1300 | '漳浦县', 1301 | '诏安县', 1302 | '长泰县', 1303 | '东山县', 1304 | '南靖县', 1305 | '平和县', 1306 | '华安县', 1307 | '龙海市' 1308 | ] 1309 | }, 1310 | { 1311 | 'name': '南平市', 1312 | 'areaList': [ 1313 | '延平区', 1314 | '顺昌县', 1315 | '浦城县', 1316 | '光泽县', 1317 | '松溪县', 1318 | '政和县', 1319 | '邵武市', 1320 | '武夷山市', 1321 | '建瓯市', 1322 | '建阳市' 1323 | ] 1324 | }, 1325 | { 1326 | 'name': '龙岩市', 1327 | 'areaList': ['新罗区', '长汀县', '永定县', '上杭县', '武平县', '连城县', '漳平市'] 1328 | }, 1329 | { 1330 | 'name': '宁德市', 1331 | 'areaList': [ 1332 | '蕉城区', 1333 | '霞浦县', 1334 | '古田县', 1335 | '屏南县', 1336 | '寿宁县', 1337 | '周宁县', 1338 | '柘荣县', 1339 | '福安市', 1340 | '福鼎市' 1341 | ] 1342 | } 1343 | ] 1344 | }, 1345 | { 1346 | 'name': '江西', 1347 | 'cityList': [ 1348 | { 1349 | 'name': '南昌市', 1350 | 'areaList': [ 1351 | '东湖区', 1352 | '西湖区', 1353 | '青云谱区', 1354 | '湾里区', 1355 | '青山湖区', 1356 | '南昌县', 1357 | '新建县', 1358 | '安义县', 1359 | '进贤县' 1360 | ] 1361 | }, 1362 | { 1363 | 'name': '景德镇市', 1364 | 'areaList': ['昌江区', '珠山区', '浮梁县', '乐平市'] 1365 | }, 1366 | { 1367 | 'name': '萍乡市', 1368 | 'areaList': ['安源区', '湘东区', '莲花县', '上栗县', '芦溪县'] 1369 | }, 1370 | { 1371 | 'name': '九江市', 1372 | 'areaList': [ 1373 | '庐山区', 1374 | '浔阳区', 1375 | '九江县', 1376 | '武宁县', 1377 | '修水县', 1378 | '永修县', 1379 | '德安县', 1380 | '星子县', 1381 | '都昌县', 1382 | '湖口县', 1383 | '彭泽县', 1384 | '瑞昌市' 1385 | ] 1386 | }, 1387 | { 1388 | 'name': '新余市', 1389 | 'areaList': ['渝水区', '分宜县'] 1390 | }, 1391 | { 1392 | 'name': '鹰潭市', 1393 | 'areaList': ['月湖区', '余江县', '贵溪市'] 1394 | }, 1395 | { 1396 | 'name': '赣州市', 1397 | 'areaList': [ 1398 | '章贡区', 1399 | '赣 县', 1400 | '信丰县', 1401 | '大余县', 1402 | '上犹县', 1403 | '崇义县', 1404 | '安远县', 1405 | '龙南县', 1406 | '定南县', 1407 | '全南县', 1408 | '宁都县', 1409 | '于都县', 1410 | '兴国县', 1411 | '会昌县', 1412 | '寻乌县', 1413 | '石城县', 1414 | '瑞金市', 1415 | '南康市' 1416 | ] 1417 | }, 1418 | { 1419 | 'name': '吉安市', 1420 | 'areaList': [ 1421 | '吉州区', 1422 | '青原区', 1423 | '吉安县', 1424 | '吉水县', 1425 | '峡江县', 1426 | '新干县', 1427 | '永丰县', 1428 | '泰和县', 1429 | '遂川县', 1430 | '万安县', 1431 | '安福县', 1432 | '永新县', 1433 | '井冈山市' 1434 | ] 1435 | }, 1436 | { 1437 | 'name': '宜春市', 1438 | 'areaList': [ 1439 | '袁州区', 1440 | '奉新县', 1441 | '万载县', 1442 | '上高县', 1443 | '宜丰县', 1444 | '靖安县', 1445 | '铜鼓县', 1446 | '丰城市', 1447 | '樟树市', 1448 | '高安市' 1449 | ] 1450 | }, 1451 | { 1452 | 'name': '抚州市', 1453 | 'areaList': [ 1454 | '临川区', 1455 | '南城县', 1456 | '黎川县', 1457 | '南丰县', 1458 | '崇仁县', 1459 | '乐安县', 1460 | '宜黄县', 1461 | '金溪县', 1462 | '资溪县', 1463 | '东乡县', 1464 | '广昌县' 1465 | ] 1466 | }, 1467 | { 1468 | 'name': '上饶市', 1469 | 'areaList': [ 1470 | '信州区', 1471 | '上饶县', 1472 | '广丰县', 1473 | '玉山县', 1474 | '铅山县', 1475 | '横峰县', 1476 | '弋阳县', 1477 | '余干县', 1478 | '鄱阳县', 1479 | '万年县', 1480 | '婺源县', 1481 | '德兴市' 1482 | ] 1483 | } 1484 | ] 1485 | }, 1486 | { 1487 | 'name': '山东', 1488 | 'cityList': [ 1489 | { 1490 | 'name': '济南市', 1491 | 'areaList': [ 1492 | '历下区', 1493 | '市中区', 1494 | '槐荫区', 1495 | '天桥区', 1496 | '历城区', 1497 | '长清区', 1498 | '平阴县', 1499 | '济阳县', 1500 | '商河县', 1501 | '章丘市' 1502 | ] 1503 | }, 1504 | { 1505 | 'name': '青岛市', 1506 | 'areaList': [ 1507 | '市南区', 1508 | '市北区', 1509 | '四方区', 1510 | '黄岛区', 1511 | '崂山区', 1512 | '李沧区', 1513 | '城阳区', 1514 | '胶州市', 1515 | '即墨市', 1516 | '平度市', 1517 | '胶南市', 1518 | '莱西市' 1519 | ] 1520 | }, 1521 | { 1522 | 'name': '淄博市', 1523 | 'areaList': ['淄川区', '张店区', '博山区', '临淄区', '周村区', '桓台县', '高青县', '沂源县'] 1524 | }, 1525 | { 1526 | 'name': '枣庄市', 1527 | 'areaList': ['市中区', '薛城区', '峄城区', '台儿庄区', '山亭区', '滕州市'] 1528 | }, 1529 | { 1530 | 'name': '东营市', 1531 | 'areaList': ['东营区', '河口区', '垦利县', '利津县', '广饶县'] 1532 | }, 1533 | { 1534 | 'name': '烟台市', 1535 | 'areaList': [ 1536 | '芝罘区', 1537 | '福山区', 1538 | '牟平区', 1539 | '莱山区', 1540 | '长岛县', 1541 | '龙口市', 1542 | '莱阳市', 1543 | '莱州市', 1544 | '蓬莱市', 1545 | '招远市', 1546 | '栖霞市', 1547 | '海阳市' 1548 | ] 1549 | }, 1550 | { 1551 | 'name': '潍坊市', 1552 | 'areaList': [ 1553 | '潍城区', 1554 | '寒亭区', 1555 | '坊子区', 1556 | '奎文区', 1557 | '临朐县', 1558 | '昌乐县', 1559 | '青州市', 1560 | '诸城市', 1561 | '寿光市', 1562 | '安丘市', 1563 | '高密市', 1564 | '昌邑市' 1565 | ] 1566 | }, 1567 | { 1568 | 'name': '济宁市', 1569 | 'areaList': [ 1570 | '市中区', 1571 | '任城区', 1572 | '微山县', 1573 | '鱼台县', 1574 | '金乡县', 1575 | '嘉祥县', 1576 | '汶上县', 1577 | '泗水县', 1578 | '梁山县', 1579 | '曲阜市', 1580 | '兖州市', 1581 | '邹城市' 1582 | ] 1583 | }, 1584 | { 1585 | 'name': '泰安市', 1586 | 'areaList': ['泰山区', '岱岳区', '宁阳县', '东平县', '新泰市', '肥城市'] 1587 | }, 1588 | { 1589 | 'name': '威海市', 1590 | 'areaList': ['环翠区', '文登市', '荣成市', '乳山市'] 1591 | }, 1592 | { 1593 | 'name': '日照市', 1594 | 'areaList': ['东港区', '岚山区', '五莲县', '莒县'] 1595 | }, 1596 | { 1597 | 'name': '莱芜市', 1598 | 'areaList': ['莱城区', '钢城区'] 1599 | }, 1600 | { 1601 | 'name': '临沂市', 1602 | 'areaList': [ 1603 | '兰山区', 1604 | '罗庄区', 1605 | '河东区', 1606 | '沂南县', 1607 | '郯城县', 1608 | '沂水县', 1609 | '苍山县', 1610 | '费县', 1611 | '平邑县', 1612 | '莒南县', 1613 | '蒙阴县', 1614 | '临沭县' 1615 | ] 1616 | }, 1617 | { 1618 | 'name': '德州市', 1619 | 'areaList': [ 1620 | '德城区', 1621 | '陵县', 1622 | '宁津县', 1623 | '庆云县', 1624 | '临邑县', 1625 | '齐河县', 1626 | '平原县', 1627 | '夏津县', 1628 | '武城县', 1629 | '乐陵市', 1630 | '禹城市' 1631 | ] 1632 | }, 1633 | { 1634 | 'name': '聊城市', 1635 | 'areaList': ['东昌府区', '阳谷县', '莘县', '茌平县', '东阿县', '冠县', '高唐县', '临清市'] 1636 | }, 1637 | { 1638 | 'name': '滨州市', 1639 | 'areaList': ['滨城区', '惠民县', '阳信县', '无棣县', '沾化县', '博兴县', '邹平县'] 1640 | }, 1641 | { 1642 | 'name': '荷泽市', 1643 | 'areaList': ['牡丹区', '曹县', '单县', '成武县', '巨野县', '郓城县', '鄄城县', '定陶县', '东明县'] 1644 | } 1645 | ] 1646 | }, 1647 | { 1648 | 'name': '河南', 1649 | 'cityList': [ 1650 | { 1651 | 'name': '郑州市', 1652 | 'areaList': [ 1653 | '中原区', 1654 | '二七区', 1655 | '管城回族区', 1656 | '金水区', 1657 | '上街区', 1658 | '邙山区', 1659 | '中牟县', 1660 | '巩义市', 1661 | '荥阳市', 1662 | '新密市', 1663 | '新郑市', 1664 | '登封市' 1665 | ] 1666 | }, 1667 | { 1668 | 'name': '开封市', 1669 | 'areaList': [ 1670 | '龙亭区', 1671 | '顺河回族区', 1672 | '鼓楼区', 1673 | '南关区', 1674 | '郊 区', 1675 | '杞 县', 1676 | '通许县', 1677 | '尉氏县', 1678 | '开封县', 1679 | '兰考县' 1680 | ] 1681 | }, 1682 | { 1683 | 'name': '洛阳市', 1684 | 'areaList': [ 1685 | '老城区', 1686 | '西工区', 1687 | '廛河回族区', 1688 | '涧西区', 1689 | '吉利区', 1690 | '洛龙区', 1691 | '孟津县', 1692 | '新安县', 1693 | '栾川县', 1694 | '嵩县', 1695 | '汝阳县', 1696 | '宜阳县', 1697 | '洛宁县', 1698 | '伊川县', 1699 | '偃师市' 1700 | ] 1701 | }, 1702 | { 1703 | 'name': '平顶山市', 1704 | 'areaList': [ 1705 | '新华区', 1706 | '卫东区', 1707 | '石龙区', 1708 | '湛河区', 1709 | '宝丰县', 1710 | '叶县', 1711 | '鲁山县', 1712 | '郏县', 1713 | '舞钢市', 1714 | '汝州市' 1715 | ] 1716 | }, 1717 | { 1718 | 'name': '安阳市', 1719 | 'areaList': ['文峰区', '北关区', '殷都区', '龙安区', '安阳县', '汤阴县', '滑县', '内黄县', '林州市'] 1720 | }, 1721 | { 1722 | 'name': '鹤壁市', 1723 | 'areaList': ['鹤山区', '山城区', '淇滨区', '浚县', '淇县'] 1724 | }, 1725 | { 1726 | 'name': '新乡市', 1727 | 'areaList': [ 1728 | '红旗区', 1729 | '卫滨区', 1730 | '凤泉区', 1731 | '牧野区', 1732 | '新乡县', 1733 | '获嘉县', 1734 | '原阳县', 1735 | '延津县', 1736 | '封丘县', 1737 | '长垣县', 1738 | '卫辉市', 1739 | '辉县市' 1740 | ] 1741 | }, 1742 | { 1743 | 'name': '焦作市', 1744 | 'areaList': [ 1745 | '解放区', 1746 | '中站区', 1747 | '马村区', 1748 | '山阳区', 1749 | '修武县', 1750 | '博爱县', 1751 | '武陟县', 1752 | '温 县', 1753 | '济源市', 1754 | '沁阳市', 1755 | '孟州市' 1756 | ] 1757 | }, 1758 | { 1759 | 'name': '濮阳市', 1760 | 'areaList': ['华龙区', '清丰县', '南乐县', '范 县', '台前县', '濮阳县'] 1761 | }, 1762 | { 1763 | 'name': '许昌市', 1764 | 'areaList': ['魏都区', '许昌县', '鄢陵县', '襄城县', '禹州市', '长葛市'] 1765 | }, 1766 | { 1767 | 'name': '漯河市', 1768 | 'areaList': ['源汇区', '郾城区', '召陵区', '舞阳县', '临颍县'] 1769 | }, 1770 | { 1771 | 'name': '三门峡市', 1772 | 'areaList': ['湖滨区', '渑池县', '陕县', '卢氏县', '义马市', '灵宝市'] 1773 | }, 1774 | { 1775 | 'name': '南阳市', 1776 | 'areaList': [ 1777 | '宛城区', 1778 | '卧龙区', 1779 | '南召县', 1780 | '方城县', 1781 | '西峡县', 1782 | '镇平县', 1783 | '内乡县', 1784 | '淅川县', 1785 | '社旗县', 1786 | '唐河县', 1787 | '新野县', 1788 | '桐柏县', 1789 | '邓州市' 1790 | ] 1791 | }, 1792 | { 1793 | 'name': '商丘市', 1794 | 'areaList': [ 1795 | '梁园区', 1796 | '睢阳区', 1797 | '民权县', 1798 | '睢 县', 1799 | '宁陵县', 1800 | '柘城县', 1801 | '虞城县', 1802 | '夏邑县', 1803 | '永城市' 1804 | ] 1805 | }, 1806 | { 1807 | 'name': '信阳市', 1808 | 'areaList': [ 1809 | '师河区', 1810 | '平桥区', 1811 | '罗山县', 1812 | '光山县', 1813 | '新 县', 1814 | '商城县', 1815 | '固始县', 1816 | '潢川县', 1817 | '淮滨县', 1818 | '息县' 1819 | ] 1820 | }, 1821 | { 1822 | 'name': '周口市', 1823 | 'areaList': [ 1824 | '川汇区', 1825 | '扶沟县', 1826 | '西华县', 1827 | '商水县', 1828 | '沈丘县', 1829 | '郸城县', 1830 | '淮阳县', 1831 | '太康县', 1832 | '鹿邑县', 1833 | '项城市' 1834 | ] 1835 | }, 1836 | { 1837 | 'name': '驻马店市', 1838 | 'areaList': [ 1839 | '驿城区', 1840 | '西平县', 1841 | '上蔡县', 1842 | '平舆县', 1843 | '正阳县', 1844 | '确山县', 1845 | '泌阳县', 1846 | '汝南县', 1847 | '遂平县', 1848 | '新蔡县' 1849 | ] 1850 | } 1851 | ] 1852 | }, 1853 | { 1854 | 'name': '湖北', 1855 | 'cityList': [ 1856 | { 1857 | 'name': '武汉市', 1858 | 'areaList': [ 1859 | '江岸区', 1860 | '江汉区', 1861 | '乔口区', 1862 | '汉阳区', 1863 | '武昌区', 1864 | '青山区', 1865 | '洪山区', 1866 | '东西湖区', 1867 | '汉南区', 1868 | '蔡甸区', 1869 | '江夏区', 1870 | '黄陂区', 1871 | '新洲区' 1872 | ] 1873 | }, 1874 | { 1875 | 'name': '黄石市', 1876 | 'areaList': ['黄石港区', '西塞山区', '下陆区', '铁山区', '阳新县', '大冶市'] 1877 | }, 1878 | { 1879 | 'name': '十堰市', 1880 | 'areaList': ['茅箭区', '张湾区', '郧 县', '郧西县', '竹山县', '竹溪县', '房 县', '丹江口市'] 1881 | }, 1882 | { 1883 | 'name': '宜昌市', 1884 | 'areaList': [ 1885 | '西陵区', 1886 | '伍家岗区', 1887 | '点军区', 1888 | '猇亭区', 1889 | '夷陵区', 1890 | '远安县', 1891 | '兴山县', 1892 | '秭归县', 1893 | '长阳土家族自治县', 1894 | '五峰土家族自治县', 1895 | '宜都市', 1896 | '当阳市', 1897 | '枝江市' 1898 | ] 1899 | }, 1900 | { 1901 | 'name': '襄樊市', 1902 | 'areaList': [ 1903 | '襄城区', 1904 | '樊城区', 1905 | '襄阳区', 1906 | '南漳县', 1907 | '谷城县', 1908 | '保康县', 1909 | '老河口市', 1910 | '枣阳市', 1911 | '宜城市' 1912 | ] 1913 | }, 1914 | { 1915 | 'name': '鄂州市', 1916 | 'areaList': ['梁子湖区', '华容区', '鄂城区'] 1917 | }, 1918 | { 1919 | 'name': '荆门市', 1920 | 'areaList': ['东宝区', '掇刀区', '京山县', '沙洋县', '钟祥市'] 1921 | }, 1922 | { 1923 | 'name': '孝感市', 1924 | 'areaList': ['孝南区', '孝昌县', '大悟县', '云梦县', '应城市', '安陆市', '汉川市'] 1925 | }, 1926 | { 1927 | 'name': '荆州市', 1928 | 'areaList': ['沙市区', '荆州区', '公安县', '监利县', '江陵县', '石首市', '洪湖市', '松滋市'] 1929 | }, 1930 | { 1931 | 'name': '黄冈市', 1932 | 'areaList': [ 1933 | '黄州区', 1934 | '团风县', 1935 | '红安县', 1936 | '罗田县', 1937 | '英山县', 1938 | '浠水县', 1939 | '蕲春县', 1940 | '黄梅县', 1941 | '麻城市', 1942 | '武穴市' 1943 | ] 1944 | }, 1945 | { 1946 | 'name': '咸宁市', 1947 | 'areaList': ['咸安区', '嘉鱼县', '通城县', '崇阳县', '通山县', '赤壁市'] 1948 | }, 1949 | { 1950 | 'name': '随州市', 1951 | 'areaList': ['曾都区', '广水市'] 1952 | }, 1953 | { 1954 | 'name': '恩施土家族苗族自治州', 1955 | 'areaList': ['恩施市', '利川市', '建始县', '巴东县', '宣恩县', '咸丰县', '来凤县', '鹤峰县'] 1956 | }, 1957 | { 1958 | 'name': '省直辖行政单位', 1959 | 'areaList': ['仙桃市', '潜江市', '天门市', '神农架林区'] 1960 | } 1961 | ] 1962 | }, 1963 | { 1964 | 'name': '湖南', 1965 | 'cityList': [ 1966 | { 1967 | 'name': '长沙市', 1968 | 'areaList': [ 1969 | '芙蓉区', 1970 | '天心区', 1971 | '岳麓区', 1972 | '开福区', 1973 | '雨花区', 1974 | '长沙县', 1975 | '望城县', 1976 | '宁乡县', 1977 | '浏阳市' 1978 | ] 1979 | }, 1980 | { 1981 | 'name': '株洲市', 1982 | 'areaList': ['荷塘区', '芦淞区', '石峰区', '天元区', '株洲县', '攸县', '茶陵县', '炎陵县', '醴陵市'] 1983 | }, 1984 | { 1985 | 'name': '湘潭市', 1986 | 'areaList': ['雨湖区', '岳塘区', '湘潭县', '湘乡市', '韶山市'] 1987 | }, 1988 | { 1989 | 'name': '衡阳市', 1990 | 'areaList': [ 1991 | '珠晖区', 1992 | '雁峰区', 1993 | '石鼓区', 1994 | '蒸湘区', 1995 | '南岳区', 1996 | '衡阳县', 1997 | '衡南县', 1998 | '衡山县', 1999 | '衡东县', 2000 | '祁东县', 2001 | '耒阳市', 2002 | '常宁市' 2003 | ] 2004 | }, 2005 | { 2006 | 'name': '邵阳市', 2007 | 'areaList': [ 2008 | '双清区', 2009 | '大祥区', 2010 | '北塔区', 2011 | '邵东县', 2012 | '新邵县', 2013 | '邵阳县', 2014 | '隆回县', 2015 | '洞口县', 2016 | '绥宁县', 2017 | '新宁县', 2018 | '城步苗族自治县', 2019 | '武冈市' 2020 | ] 2021 | }, 2022 | { 2023 | 'name': '岳阳市', 2024 | 'areaList': [ 2025 | '岳阳楼区', 2026 | '云溪区', 2027 | '君山区', 2028 | '岳阳县', 2029 | '华容县', 2030 | '湘阴县', 2031 | '平江县', 2032 | '汨罗市', 2033 | '临湘市' 2034 | ] 2035 | }, 2036 | { 2037 | 'name': '常德市', 2038 | 'areaList': ['武陵区', '鼎城区', '安乡县', '汉寿县', '澧县', '临澧县', '桃源县', '石门县', '津市市'] 2039 | }, 2040 | { 2041 | 'name': '张家界市', 2042 | 'areaList': ['永定区', '武陵源区', '慈利县', '桑植县'] 2043 | }, 2044 | { 2045 | 'name': '益阳市', 2046 | 'areaList': ['资阳区', '赫山区', '南县', '桃江县', '安化县', '沅江市'] 2047 | }, 2048 | { 2049 | 'name': '郴州市', 2050 | 'areaList': [ 2051 | '北湖区', 2052 | '苏仙区', 2053 | '桂阳县', 2054 | '宜章县', 2055 | '永兴县', 2056 | '嘉禾县', 2057 | '临武县', 2058 | '汝城县', 2059 | '桂东县', 2060 | '安仁县', 2061 | '资兴市' 2062 | ] 2063 | }, 2064 | { 2065 | 'name': '永州市', 2066 | 'areaList': [ 2067 | '芝山区', 2068 | '冷水滩区', 2069 | '祁阳县', 2070 | '东安县', 2071 | '双牌县', 2072 | '道县', 2073 | '江永县', 2074 | '宁远县', 2075 | '蓝山县', 2076 | '新田县', 2077 | '江华瑶族自治县' 2078 | ] 2079 | }, 2080 | { 2081 | 'name': '怀化市', 2082 | 'areaList': [ 2083 | '鹤城区', 2084 | '中方县', 2085 | '沅陵县', 2086 | '辰溪县', 2087 | '溆浦县', 2088 | '会同县', 2089 | '麻阳苗族自治县', 2090 | '新晃侗族自治县', 2091 | '芷江侗族自治县', 2092 | '靖州苗族侗族自治县', 2093 | '通道侗族自治县', 2094 | '洪江市' 2095 | ] 2096 | }, 2097 | { 2098 | 'name': '娄底市', 2099 | 'areaList': ['娄星区', '双峰县', '新化县', '冷水江市', '涟源市'] 2100 | }, 2101 | { 2102 | 'name': '湘西土家族苗族自治州', 2103 | 'areaList': ['吉首市', '泸溪县', '凤凰县', '花垣县', '保靖县', '古丈县', '永顺县', '龙山县'] 2104 | } 2105 | ] 2106 | }, 2107 | { 2108 | 'name': '广东', 2109 | 'cityList': [ 2110 | { 2111 | 'name': '广州市', 2112 | 'areaList': [ 2113 | '东山区', 2114 | '荔湾区', 2115 | '越秀区', 2116 | '海珠区', 2117 | '天河区', 2118 | '芳村区', 2119 | '白云区', 2120 | '黄埔区', 2121 | '番禺区', 2122 | '花都区', 2123 | '增城市', 2124 | '从化市' 2125 | ] 2126 | }, 2127 | { 2128 | 'name': '韶关市', 2129 | 'areaList': [ 2130 | '武江区', 2131 | '浈江区', 2132 | '曲江区', 2133 | '始兴县', 2134 | '仁化县', 2135 | '翁源县', 2136 | '乳源瑶族自治县', 2137 | '新丰县', 2138 | '乐昌市', 2139 | '南雄市' 2140 | ] 2141 | }, 2142 | { 2143 | 'name': '深圳市', 2144 | 'areaList': ['罗湖区', '福田区', '南山区', '宝安区', '龙岗区', '盐田区'] 2145 | }, 2146 | { 2147 | 'name': '珠海市', 2148 | 'areaList': ['香洲区', '斗门区', '金湾区'] 2149 | }, 2150 | { 2151 | 'name': '汕头市', 2152 | 'areaList': ['龙湖区', '金平区', '濠江区', '潮阳区', '潮南区', '澄海区', '南澳县'] 2153 | }, 2154 | { 2155 | 'name': '佛山市', 2156 | 'areaList': ['禅城区', '南海区', '顺德区', '三水区', '高明区'] 2157 | }, 2158 | { 2159 | 'name': '江门市', 2160 | 'areaList': ['蓬江区', '江海区', '新会区', '台山市', '开平市', '鹤山市', '恩平市'] 2161 | }, 2162 | { 2163 | 'name': '湛江市', 2164 | 'areaList': [ 2165 | '赤坎区', 2166 | '霞山区', 2167 | '坡头区', 2168 | '麻章区', 2169 | '遂溪县', 2170 | '徐闻县', 2171 | '廉江市', 2172 | '雷州市', 2173 | '吴川市' 2174 | ] 2175 | }, 2176 | { 2177 | 'name': '茂名市', 2178 | 'areaList': ['茂南区', '茂港区', '电白县', '高州市', '化州市', '信宜市'] 2179 | }, 2180 | { 2181 | 'name': '肇庆市', 2182 | 'areaList': ['端州区', '鼎湖区', '广宁县', '怀集县', '封开县', '德庆县', '高要市', '四会市'] 2183 | }, 2184 | { 2185 | 'name': '惠州市', 2186 | 'areaList': ['惠城区', '惠阳区', '博罗县', '惠东县', '龙门县'] 2187 | }, 2188 | { 2189 | 'name': '梅州市', 2190 | 'areaList': ['梅江区', '梅 县', '大埔县', '丰顺县', '五华县', '平远县', '蕉岭县', '兴宁市'] 2191 | }, 2192 | { 2193 | 'name': '汕尾市', 2194 | 'areaList': ['城 区', '海丰县', '陆河县', '陆丰市'] 2195 | }, 2196 | { 2197 | 'name': '河源市', 2198 | 'areaList': ['源城区', '紫金县', '龙川县', '连平县', '和平县', '东源县'] 2199 | }, 2200 | { 2201 | 'name': '阳江市', 2202 | 'areaList': ['江城区', '阳西县', '阳东县', '阳春市'] 2203 | }, 2204 | { 2205 | 'name': '清远市', 2206 | 'areaList': [ 2207 | '清城区', 2208 | '佛冈县', 2209 | '阳山县', 2210 | '连山壮族瑶族自治县', 2211 | '连南瑶族自治县', 2212 | '清新县', 2213 | '英德市', 2214 | '连州市' 2215 | ] 2216 | }, 2217 | { 2218 | 'name': '东莞市', 2219 | 'areaList': ['东莞市'] 2220 | }, 2221 | { 2222 | 'name': '中山市', 2223 | 'areaList': ['中山市'] 2224 | }, 2225 | { 2226 | 'name': '潮州市', 2227 | 'areaList': ['湘桥区', '潮安县', '饶平县'] 2228 | }, 2229 | { 2230 | 'name': '揭阳市', 2231 | 'areaList': ['榕城区', '揭东县', '揭西县', '惠来县', '普宁市'] 2232 | }, 2233 | { 2234 | 'name': '云浮市', 2235 | 'areaList': ['云城区', '新兴县', '郁南县', '云安县', '罗定市'] 2236 | } 2237 | ] 2238 | }, 2239 | { 2240 | 'name': '广西', 2241 | 'cityList': [ 2242 | { 2243 | 'name': '南宁市', 2244 | 'areaList': [ 2245 | '兴宁区', 2246 | '青秀区', 2247 | '江南区', 2248 | '西乡塘区', 2249 | '良庆区', 2250 | '邕宁区', 2251 | '武鸣县', 2252 | '隆安县', 2253 | '马山县', 2254 | '上林县', 2255 | '宾阳县', 2256 | '横 县' 2257 | ] 2258 | }, 2259 | { 2260 | 'name': '柳州市', 2261 | 'areaList': [ 2262 | '城中区', 2263 | '鱼峰区', 2264 | '柳南区', 2265 | '柳北区', 2266 | '柳江县', 2267 | '柳城县', 2268 | '鹿寨县', 2269 | '融安县', 2270 | '融水苗族自治县', 2271 | '三江侗族自治县' 2272 | ] 2273 | }, 2274 | { 2275 | 'name': '桂林市', 2276 | 'areaList': [ 2277 | '秀峰区', 2278 | '叠彩区', 2279 | '象山区', 2280 | '七星区', 2281 | '雁山区', 2282 | '阳朔县', 2283 | '临桂县', 2284 | '灵川县', 2285 | '全州县', 2286 | '兴安县', 2287 | '永福县', 2288 | '灌阳县', 2289 | '龙胜各族自治县', 2290 | '资源县', 2291 | '平乐县', 2292 | '荔蒲县', 2293 | '恭城瑶族自治县' 2294 | ] 2295 | }, 2296 | { 2297 | 'name': '梧州市', 2298 | 'areaList': ['万秀区', '蝶山区', '长洲区', '苍梧县', '藤 县', '蒙山县', '岑溪市'] 2299 | }, 2300 | { 2301 | 'name': '北海市', 2302 | 'areaList': ['海城区', '银海区', '铁山港区', '合浦县'] 2303 | }, 2304 | { 2305 | 'name': '防城港市', 2306 | 'areaList': ['港口区', '防城区', '上思县', '东兴市'] 2307 | }, 2308 | { 2309 | 'name': '钦州市', 2310 | 'areaList': ['钦南区', '钦北区', '灵山县', '浦北县'] 2311 | }, 2312 | { 2313 | 'name': '贵港市', 2314 | 'areaList': ['港北区', '港南区', '覃塘区', '平南县', '桂平市'] 2315 | }, 2316 | { 2317 | 'name': '玉林市', 2318 | 'areaList': ['玉州区', '容 县', '陆川县', '博白县', '兴业县', '北流市'] 2319 | }, 2320 | { 2321 | 'name': '百色市', 2322 | 'areaList': [ 2323 | '右江区', 2324 | '田阳县', 2325 | '田东县', 2326 | '平果县', 2327 | '德保县', 2328 | '靖西县', 2329 | '那坡县', 2330 | '凌云县', 2331 | '乐业县', 2332 | '田林县', 2333 | '西林县', 2334 | '隆林各族自治县' 2335 | ] 2336 | }, 2337 | { 2338 | 'name': '贺州市', 2339 | 'areaList': ['八步区', '昭平县', '钟山县', '富川瑶族自治县'] 2340 | }, 2341 | { 2342 | 'name': '河池市', 2343 | 'areaList': [ 2344 | '金城江区', 2345 | '南丹县', 2346 | '天峨县', 2347 | '凤山县', 2348 | '东兰县', 2349 | '罗城仫佬族自治县', 2350 | '环江毛南族自治县', 2351 | '巴马瑶族自治县', 2352 | '都安瑶族自治县', 2353 | '大化瑶族自治县', 2354 | '宜州市' 2355 | ] 2356 | }, 2357 | { 2358 | 'name': '来宾市', 2359 | 'areaList': ['兴宾区', '忻城县', '象州县', '武宣县', '金秀瑶族自治县', '合山市'] 2360 | }, 2361 | { 2362 | 'name': '崇左市', 2363 | 'areaList': ['江洲区', '扶绥县', '宁明县', '龙州县', '大新县', '天等县', '凭祥市'] 2364 | } 2365 | ] 2366 | }, 2367 | { 2368 | 'name': '海南', 2369 | 'cityList': [ 2370 | { 2371 | 'name': '海口市', 2372 | 'areaList': ['秀英区', '龙华区', '琼山区', '美兰区'] 2373 | }, 2374 | { 2375 | 'name': '三亚市', 2376 | 'areaList': ['市辖区'] 2377 | }, 2378 | { 2379 | 'name': '省直辖县级行政单位', 2380 | 'areaList': [ 2381 | '五指山市', 2382 | '琼海市', 2383 | '儋州市', 2384 | '文昌市', 2385 | '万宁市', 2386 | '东方市', 2387 | '定安县', 2388 | '屯昌县', 2389 | '澄迈县', 2390 | '临高县', 2391 | '白沙黎族自治县', 2392 | '昌江黎族自治县', 2393 | '乐东黎族自治县', 2394 | '陵水黎族自治县', 2395 | '保亭黎族苗族自治县', 2396 | '琼中黎族苗族自治县', 2397 | '西沙群岛', 2398 | '南沙群岛', 2399 | '中沙群岛的岛礁及其海域' 2400 | ] 2401 | } 2402 | ] 2403 | }, 2404 | { 2405 | 'name': '重庆市', 2406 | 'cityList': [ 2407 | { 2408 | 'areaList': [ 2409 | '万州区', 2410 | '涪陵区', 2411 | '渝中区', 2412 | '大渡口区', 2413 | '江北区', 2414 | '沙坪坝区', 2415 | '九龙坡区', 2416 | '南岸区', 2417 | '北碚区', 2418 | '万盛区', 2419 | '双桥区', 2420 | '渝北区', 2421 | '巴南区', 2422 | '黔江区', 2423 | '长寿区', 2424 | '綦江县', 2425 | '潼南县', 2426 | '铜梁县', 2427 | '大足县', 2428 | '荣昌县', 2429 | '璧山县', 2430 | '梁平县', 2431 | '城口县', 2432 | '丰都县', 2433 | '垫江县', 2434 | '武隆县', 2435 | '忠 县', 2436 | '开 县', 2437 | '云阳县', 2438 | '奉节县', 2439 | '巫山县', 2440 | '巫溪县', 2441 | '石柱土家族自治县', 2442 | '秀山土家族苗族自治县', 2443 | '酉阳土家族苗族自治县', 2444 | '彭水苗族土家族自治县', 2445 | '江津市', 2446 | '合川市', 2447 | '永川市', 2448 | '南川市' 2449 | ] 2450 | } 2451 | ] 2452 | }, 2453 | { 2454 | 'name': '四川', 2455 | 'cityList': [ 2456 | { 2457 | 'name': '成都市', 2458 | 'areaList': [ 2459 | '锦江区', 2460 | '青羊区', 2461 | '金牛区', 2462 | '武侯区', 2463 | '成华区', 2464 | '龙泉驿区', 2465 | '青白江区', 2466 | '新都区', 2467 | '温江县', 2468 | '金堂县', 2469 | '双流县', 2470 | '郫县', 2471 | '大邑县', 2472 | '蒲江县', 2473 | '新津县', 2474 | '都江堰市', 2475 | '彭州市', 2476 | '邛崃市', 2477 | '崇州市' 2478 | ] 2479 | }, 2480 | { 2481 | 'name': '自贡市', 2482 | 'areaList': ['自流井区', '贡井区', '大安区', '沿滩区', '荣县', '富顺县'] 2483 | }, 2484 | { 2485 | 'name': '攀枝花市', 2486 | 'areaList': ['东区', '西区', '仁和区', '米易县', '盐边县'] 2487 | }, 2488 | { 2489 | 'name': '泸州市', 2490 | 'areaList': ['江阳区', '纳溪区', '龙马潭区', '泸县', '合江县', '叙永县', '古蔺县'] 2491 | }, 2492 | { 2493 | 'name': '德阳市', 2494 | 'areaList': ['旌阳区', '中江县', '罗江县', '广汉市', '什邡市', '绵竹市'] 2495 | }, 2496 | { 2497 | 'name': '绵阳市', 2498 | 'areaList': [ 2499 | '涪城区', 2500 | '游仙区', 2501 | '三台县', 2502 | '盐亭县', 2503 | '安 县', 2504 | '梓潼县', 2505 | '北川羌族自治县', 2506 | '平武县', 2507 | '江油市' 2508 | ] 2509 | }, 2510 | { 2511 | 'name': '广元市', 2512 | 'areaList': ['市中区', '元坝区', '朝天区', '旺苍县', '青川县', '剑阁县', '苍溪县'] 2513 | }, 2514 | { 2515 | 'name': '遂宁市', 2516 | 'areaList': ['船山区', '安居区', '蓬溪县', '射洪县', '大英县'] 2517 | }, 2518 | { 2519 | 'name': '内江市', 2520 | 'areaList': ['市中区', '东兴区', '威远县', '资中县', '隆昌县'] 2521 | }, 2522 | { 2523 | 'name': '乐山市', 2524 | 'areaList': [ 2525 | '市中区', 2526 | '沙湾区', 2527 | '五通桥区', 2528 | '金口河区', 2529 | '犍为县', 2530 | '井研县', 2531 | '夹江县', 2532 | '沐川县', 2533 | '峨边彝族自治县', 2534 | '马边彝族自治县', 2535 | '峨眉山市' 2536 | ] 2537 | }, 2538 | { 2539 | 'name': '南充市', 2540 | 'areaList': [ 2541 | '顺庆区', 2542 | '高坪区', 2543 | '嘉陵区', 2544 | '南部县', 2545 | '营山县', 2546 | '蓬安县', 2547 | '仪陇县', 2548 | '西充县', 2549 | '阆中市' 2550 | ] 2551 | }, 2552 | { 2553 | 'name': '眉山市', 2554 | 'areaList': ['东坡区', '仁寿县', '彭山县', '洪雅县', '丹棱县', '青神县'] 2555 | }, 2556 | { 2557 | 'name': '宜宾市', 2558 | 'areaList': [ 2559 | '翠屏区', 2560 | '宜宾县', 2561 | '南溪县', 2562 | '江安县', 2563 | '长宁县', 2564 | '高县', 2565 | '珙县', 2566 | '筠连县', 2567 | '兴文县', 2568 | '屏山县' 2569 | ] 2570 | }, 2571 | { 2572 | 'name': '广安市', 2573 | 'areaList': ['广安区', '岳池县', '武胜县', '邻水县', '华莹市'] 2574 | }, 2575 | { 2576 | 'name': '达州市', 2577 | 'areaList': ['通川区', '达 县', '宣汉县', '开江县', '大竹县', '渠县', '万源市'] 2578 | }, 2579 | { 2580 | 'name': '雅安市', 2581 | 'areaList': ['雨城区', '名山县', '荥经县', '汉源县', '石棉县', '天全县', '芦山县', '宝兴县'] 2582 | }, 2583 | { 2584 | 'name': '巴中市', 2585 | 'areaList': ['巴州区', '通江县', '南江县', '平昌县'] 2586 | }, 2587 | { 2588 | 'name': '资阳市', 2589 | 'areaList': ['雁江区', '安岳县', '乐至县', '简阳市'] 2590 | }, 2591 | { 2592 | 'name': '阿坝藏族羌族自治州', 2593 | 'areaList': [ 2594 | '汶川县', 2595 | '理县', 2596 | '茂县', 2597 | '松潘县', 2598 | '九寨沟县', 2599 | '金川县', 2600 | '小金县', 2601 | '黑水县', 2602 | '马尔康县', 2603 | '壤塘县', 2604 | '阿坝县', 2605 | '若尔盖县', 2606 | '红原县' 2607 | ] 2608 | }, 2609 | { 2610 | 'name': '甘孜藏族自治州', 2611 | 'areaList': [ 2612 | '康定县', 2613 | '泸定县', 2614 | '丹巴县', 2615 | '九龙县', 2616 | '雅江县', 2617 | '道孚县', 2618 | '炉霍县', 2619 | '甘孜县', 2620 | '新龙县', 2621 | '德格县', 2622 | '白玉县', 2623 | '石渠县', 2624 | '色达县', 2625 | '理塘县', 2626 | '巴塘县', 2627 | '乡城县', 2628 | '稻城县', 2629 | '得荣县' 2630 | ] 2631 | }, 2632 | { 2633 | 'name': '凉山彝族自治州', 2634 | 'areaList': [ 2635 | '西昌市', 2636 | '木里藏族自治县', 2637 | '盐源县', 2638 | '德昌县', 2639 | '会理县', 2640 | '会东县', 2641 | '宁南县', 2642 | '普格县', 2643 | '布拖县', 2644 | '金阳县', 2645 | '昭觉县', 2646 | '喜德县', 2647 | '冕宁县', 2648 | '越西县', 2649 | '甘洛县', 2650 | '美姑县', 2651 | '雷波县' 2652 | ] 2653 | } 2654 | ] 2655 | }, 2656 | { 2657 | 'name': '贵州', 2658 | 'cityList': [ 2659 | { 2660 | 'name': '贵阳市', 2661 | 'areaList': [ 2662 | '南明区', 2663 | '云岩区', 2664 | '花溪区', 2665 | '乌当区', 2666 | '白云区', 2667 | '小河区', 2668 | '开阳县', 2669 | '息烽县', 2670 | '修文县', 2671 | '清镇市' 2672 | ] 2673 | }, 2674 | { 2675 | 'name': '六盘水市', 2676 | 'areaList': ['钟山区', '六枝特区', '水城县', '盘县'] 2677 | }, 2678 | { 2679 | 'name': '遵义市', 2680 | 'areaList': [ 2681 | '红花岗区', 2682 | '汇川区', 2683 | '遵义县', 2684 | '桐梓县', 2685 | '绥阳县', 2686 | '正安县', 2687 | '道真仡佬族苗族自治县', 2688 | '务川仡佬族苗族自治县', 2689 | '凤冈县', 2690 | '湄潭县', 2691 | '余庆县', 2692 | '习水县', 2693 | '赤水市', 2694 | '仁怀市' 2695 | ] 2696 | }, 2697 | { 2698 | 'name': '安顺市', 2699 | 'areaList': [ 2700 | '西秀区', 2701 | '平坝县', 2702 | '普定县', 2703 | '镇宁布依族苗族自治县', 2704 | '关岭布依族苗族自治县', 2705 | '紫云苗族布依族自治县' 2706 | ] 2707 | }, 2708 | { 2709 | 'name': '铜仁地区', 2710 | 'areaList': [ 2711 | '铜仁市', 2712 | '江口县', 2713 | '玉屏侗族自治县', 2714 | '石阡县', 2715 | '思南县', 2716 | '印江土家族苗族自治县', 2717 | '德江县', 2718 | '沿河土家族自治县', 2719 | '松桃苗族自治县', 2720 | '万山特区' 2721 | ] 2722 | }, 2723 | { 2724 | 'name': '黔西南布依族苗族自治州', 2725 | 'areaList': ['兴义市', '兴仁县', '普安县', '晴隆县', '贞丰县', '望谟县', '册亨县', '安龙县'] 2726 | }, 2727 | { 2728 | 'name': '毕节地区', 2729 | 'areaList': [ 2730 | '毕节市', 2731 | '大方县', 2732 | '黔西县', 2733 | '金沙县', 2734 | '织金县', 2735 | '纳雍县', 2736 | '威宁彝族回族苗族自治县', 2737 | '赫章县' 2738 | ] 2739 | }, 2740 | { 2741 | 'name': '黔东南苗族侗族自治州', 2742 | 'areaList': [ 2743 | '凯里市', 2744 | '黄平县', 2745 | '施秉县', 2746 | '三穗县', 2747 | '镇远县', 2748 | '岑巩县', 2749 | '天柱县', 2750 | '锦屏县', 2751 | '剑河县', 2752 | '台江县', 2753 | '黎平县', 2754 | '榕江县', 2755 | '从江县', 2756 | '雷山县', 2757 | '麻江县', 2758 | '丹寨县' 2759 | ] 2760 | }, 2761 | { 2762 | 'name': '黔南布依族苗族自治州', 2763 | 'areaList': [ 2764 | '都匀市', 2765 | '福泉市', 2766 | '荔波县', 2767 | '贵定县', 2768 | '瓮安县', 2769 | '独山县', 2770 | '平塘县', 2771 | '罗甸县', 2772 | '长顺县', 2773 | '龙里县', 2774 | '惠水县', 2775 | '三都水族自治县' 2776 | ] 2777 | } 2778 | ] 2779 | }, 2780 | { 2781 | 'name': '云南', 2782 | 'cityList': [ 2783 | { 2784 | 'name': '昆明市', 2785 | 'areaList': [ 2786 | '五华区', 2787 | '盘龙区', 2788 | '官渡区', 2789 | '西山区', 2790 | '东川区', 2791 | '呈贡县', 2792 | '晋宁县', 2793 | '富民县', 2794 | '宜良县', 2795 | '石林彝族自治县', 2796 | '嵩明县', 2797 | '禄劝彝族苗族自治县', 2798 | '寻甸回族彝族自治县', 2799 | '安宁市' 2800 | ] 2801 | }, 2802 | { 2803 | 'name': '曲靖市', 2804 | 'areaList': [ 2805 | '麒麟区', 2806 | '马龙县', 2807 | '陆良县', 2808 | '师宗县', 2809 | '罗平县', 2810 | '富源县', 2811 | '会泽县', 2812 | '沾益县', 2813 | '宣威市' 2814 | ] 2815 | }, 2816 | { 2817 | 'name': '玉溪市', 2818 | 'areaList': [ 2819 | '红塔区', 2820 | '江川县', 2821 | '澄江县', 2822 | '通海县', 2823 | '华宁县', 2824 | '易门县', 2825 | '峨山彝族自治县', 2826 | '新平彝族傣族自治县', 2827 | '元江哈尼族彝族傣族自治县' 2828 | ] 2829 | }, 2830 | { 2831 | 'name': '保山市', 2832 | 'areaList': ['隆阳区', '施甸县', '腾冲县', '龙陵县', '昌宁县'] 2833 | }, 2834 | { 2835 | 'name': '昭通市', 2836 | 'areaList': [ 2837 | '昭阳区', 2838 | '鲁甸县', 2839 | '巧家县', 2840 | '盐津县', 2841 | '大关县', 2842 | '永善县', 2843 | '绥江县', 2844 | '镇雄县', 2845 | '彝良县', 2846 | '威信县', 2847 | '水富县' 2848 | ] 2849 | }, 2850 | { 2851 | 'name': '丽江市', 2852 | 'areaList': ['古城区', '玉龙纳西族自治县', '永胜县', '华坪县', '宁蒗彝族自治县'] 2853 | }, 2854 | { 2855 | 'name': '思茅市', 2856 | 'areaList': [ 2857 | '翠云区', 2858 | '普洱哈尼族彝族自治县', 2859 | '墨江哈尼族自治县', 2860 | '景东彝族自治县', 2861 | '景谷傣族彝族自治县', 2862 | '镇沅彝族哈尼族拉祜族自治县', 2863 | '江城哈尼族彝族自治县', 2864 | '孟连傣族拉祜族佤族自治县', 2865 | '澜沧拉祜族自治县', 2866 | '西盟佤族自治县' 2867 | ] 2868 | }, 2869 | { 2870 | 'name': '临沧市', 2871 | 'areaList': [ 2872 | '临翔区', 2873 | '凤庆县', 2874 | '云 县', 2875 | '永德县', 2876 | '镇康县', 2877 | '双江拉祜族佤族布朗族傣族自治县', 2878 | '耿马傣族佤族自治县', 2879 | '沧源佤族自治县' 2880 | ] 2881 | }, 2882 | { 2883 | 'name': '楚雄彝族自治州', 2884 | 'areaList': [ 2885 | '楚雄市', 2886 | '双柏县', 2887 | '牟定县', 2888 | '南华县', 2889 | '姚安县', 2890 | '大姚县', 2891 | '永仁县', 2892 | '元谋县', 2893 | '武定县', 2894 | '禄丰县' 2895 | ] 2896 | }, 2897 | { 2898 | 'name': '红河哈尼族彝族自治州', 2899 | 'areaList': [ 2900 | '个旧市', 2901 | '开远市', 2902 | '蒙自县', 2903 | '屏边苗族自治县', 2904 | '建水县', 2905 | '石屏县', 2906 | '弥勒县', 2907 | '泸西县', 2908 | '元阳县', 2909 | '红河县', 2910 | '金平苗族瑶族傣族自治县', 2911 | '绿春县', 2912 | '河口瑶族自治县' 2913 | ] 2914 | }, 2915 | { 2916 | 'name': '文山壮族苗族自治州', 2917 | 'areaList': ['文山县', '砚山县', '西畴县', '麻栗坡县', '马关县', '丘北县', '广南县', '富宁县'] 2918 | }, 2919 | { 2920 | 'name': '西双版纳傣族自治州', 2921 | 'areaList': ['景洪市', '勐海县', '勐腊县'] 2922 | }, 2923 | { 2924 | 'name': '大理白族自治州', 2925 | 'areaList': [ 2926 | '大理市', 2927 | '漾濞彝族自治县', 2928 | '祥云县', 2929 | '宾川县', 2930 | '弥渡县', 2931 | '南涧彝族自治县', 2932 | '巍山彝族回族自治县', 2933 | '永平县', 2934 | '云龙县', 2935 | '洱源县', 2936 | '剑川县', 2937 | '鹤庆县' 2938 | ] 2939 | }, 2940 | { 2941 | 'name': '德宏傣族景颇族自治州', 2942 | 'areaList': ['瑞丽市', '潞西市', '梁河县', '盈江县', '陇川县'] 2943 | }, 2944 | { 2945 | 'name': '怒江傈僳族自治州', 2946 | 'areaList': ['泸水县', '福贡县', '贡山独龙族怒族自治县', '兰坪白族普米族自治县'] 2947 | }, 2948 | { 2949 | 'name': '迪庆藏族自治州', 2950 | 'areaList': ['香格里拉县', '德钦县', '维西傈僳族自治县'] 2951 | } 2952 | ] 2953 | }, 2954 | { 2955 | 'name': '西藏', 2956 | 'cityList': [ 2957 | { 2958 | 'name': '拉萨市', 2959 | 'areaList': ['城关区', '林周县', '当雄县', '尼木县', '曲水县', '堆龙德庆县', '达孜县', '墨竹工卡县'] 2960 | }, 2961 | { 2962 | 'name': '昌都地区', 2963 | 'areaList': [ 2964 | '昌都县', 2965 | '江达县', 2966 | '贡觉县', 2967 | '类乌齐县', 2968 | '丁青县', 2969 | '察雅县', 2970 | '八宿县', 2971 | '左贡县', 2972 | '芒康县', 2973 | '洛隆县', 2974 | '边坝县' 2975 | ] 2976 | }, 2977 | { 2978 | 'name': '山南地区', 2979 | 'areaList': [ 2980 | '乃东县', 2981 | '扎囊县', 2982 | '贡嘎县', 2983 | '桑日县', 2984 | '琼结县', 2985 | '曲松县', 2986 | '措美县', 2987 | '洛扎县', 2988 | '加查县', 2989 | '隆子县', 2990 | '错那县', 2991 | '浪卡子县' 2992 | ] 2993 | }, 2994 | { 2995 | 'name': '日喀则地区', 2996 | 'areaList': [ 2997 | '日喀则市', 2998 | '南木林县', 2999 | '江孜县', 3000 | '定日县', 3001 | '萨迦县', 3002 | '拉孜县', 3003 | '昂仁县', 3004 | '谢通门县', 3005 | '白朗县', 3006 | '仁布县', 3007 | '康马县', 3008 | '定结县', 3009 | '仲巴县', 3010 | '亚东县', 3011 | '吉隆县', 3012 | '聂拉木县', 3013 | '萨嘎县', 3014 | '岗巴县' 3015 | ] 3016 | }, 3017 | { 3018 | 'name': '那曲地区', 3019 | 'areaList': [ 3020 | '那曲县', 3021 | '嘉黎县', 3022 | '比如县', 3023 | '聂荣县', 3024 | '安多县', 3025 | '申扎县', 3026 | '索 县', 3027 | '班戈县', 3028 | '巴青县', 3029 | '尼玛县' 3030 | ] 3031 | }, 3032 | { 3033 | 'name': '阿里地区', 3034 | 'areaList': ['普兰县', '札达县', '噶尔县', '日土县', '革吉县', '改则县', '措勤县'] 3035 | }, 3036 | { 3037 | 'name': '林芝地区', 3038 | 'areaList': ['林芝县', '工布江达县', '米林县', '墨脱县', '波密县', '察隅县', '朗 县'] 3039 | } 3040 | ] 3041 | }, 3042 | { 3043 | 'name': '陕西', 3044 | 'cityList': [ 3045 | { 3046 | 'name': '西安市', 3047 | 'areaList': [ 3048 | '新城区', 3049 | '碑林区', 3050 | '莲湖区', 3051 | '灞桥区', 3052 | '未央区', 3053 | '雁塔区', 3054 | '阎良区', 3055 | '临潼区', 3056 | '长安区', 3057 | '蓝田县', 3058 | '周至县', 3059 | '户 县', 3060 | '高陵县' 3061 | ] 3062 | }, 3063 | { 3064 | 'name': '铜川市', 3065 | 'areaList': ['王益区', '印台区', '耀州区', '宜君县'] 3066 | }, 3067 | { 3068 | 'name': '宝鸡市', 3069 | 'areaList': [ 3070 | '渭滨区', 3071 | '金台区', 3072 | '陈仓区', 3073 | '凤翔县', 3074 | '岐山县', 3075 | '扶风县', 3076 | '眉 县', 3077 | '陇 县', 3078 | '千阳县', 3079 | '麟游县', 3080 | '凤 县', 3081 | '太白县' 3082 | ] 3083 | }, 3084 | { 3085 | 'name': '咸阳市', 3086 | 'areaList': [ 3087 | '秦都区', 3088 | '杨凌区', 3089 | '渭城区', 3090 | '三原县', 3091 | '泾阳县', 3092 | '乾 县', 3093 | '礼泉县', 3094 | '永寿县', 3095 | '彬 县', 3096 | '长武县', 3097 | '旬邑县', 3098 | '淳化县', 3099 | '武功县', 3100 | '兴平市' 3101 | ] 3102 | }, 3103 | { 3104 | 'name': '渭南市', 3105 | 'areaList': [ 3106 | '临渭区', 3107 | '华 县', 3108 | '潼关县', 3109 | '大荔县', 3110 | '合阳县', 3111 | '澄城县', 3112 | '蒲城县', 3113 | '白水县', 3114 | '富平县', 3115 | '韩城市', 3116 | '华阴市' 3117 | ] 3118 | }, 3119 | { 3120 | 'name': '延安市', 3121 | 'areaList': [ 3122 | '宝塔区', 3123 | '延长县', 3124 | '延川县', 3125 | '子长县', 3126 | '安塞县', 3127 | '志丹县', 3128 | '吴旗县', 3129 | '甘泉县', 3130 | '富 县', 3131 | '洛川县', 3132 | '宜川县', 3133 | '黄龙县', 3134 | '黄陵县' 3135 | ] 3136 | }, 3137 | { 3138 | 'name': '汉中市', 3139 | 'areaList': [ 3140 | '汉台区', 3141 | '南郑县', 3142 | '城固县', 3143 | '洋 县', 3144 | '西乡县', 3145 | '勉 县', 3146 | '宁强县', 3147 | '略阳县', 3148 | '镇巴县', 3149 | '留坝县', 3150 | '佛坪县' 3151 | ] 3152 | }, 3153 | { 3154 | 'name': '榆林市', 3155 | 'areaList': [ 3156 | '榆阳区', 3157 | '神木县', 3158 | '府谷县', 3159 | '横山县', 3160 | '靖边县', 3161 | '定边县', 3162 | '绥德县', 3163 | '米脂县', 3164 | '佳 县', 3165 | '吴堡县', 3166 | '清涧县', 3167 | '子洲县' 3168 | ] 3169 | }, 3170 | { 3171 | 'name': '安康市', 3172 | 'areaList': [ 3173 | '汉滨区', 3174 | '汉阴县', 3175 | '石泉县', 3176 | '宁陕县', 3177 | '紫阳县', 3178 | '岚皋县', 3179 | '平利县', 3180 | '镇坪县', 3181 | '旬阳县', 3182 | '白河县' 3183 | ] 3184 | }, 3185 | { 3186 | 'name': '商洛市', 3187 | 'areaList': ['商州区', '洛南县', '丹凤县', '商南县', '山阳县', '镇安县', '柞水县'] 3188 | } 3189 | ] 3190 | }, 3191 | { 3192 | 'name': '甘肃', 3193 | 'cityList': [ 3194 | { 3195 | 'name': '兰州市', 3196 | 'areaList': ['城关区', '七里河区', '西固区', '安宁区', '红古区', '永登县', '皋兰县', '榆中县'] 3197 | }, 3198 | { 3199 | 'name': '嘉峪关市', 3200 | 'areaList': ['市辖区'] 3201 | }, 3202 | { 3203 | 'name': '金昌市', 3204 | 'areaList': ['金川区', '永昌县'] 3205 | }, 3206 | { 3207 | 'name': '白银市', 3208 | 'areaList': ['白银区', '平川区', '靖远县', '会宁县', '景泰县'] 3209 | }, 3210 | { 3211 | 'name': '天水市', 3212 | 'areaList': ['秦城区', '北道区', '清水县', '秦安县', '甘谷县', '武山县', '张家川回族自治县'] 3213 | }, 3214 | { 3215 | 'name': '武威市', 3216 | 'areaList': ['凉州区', '民勤县', '古浪县', '天祝藏族自治县'] 3217 | }, 3218 | { 3219 | 'name': '张掖市', 3220 | 'areaList': ['甘州区', '肃南裕固族自治县', '民乐县', '临泽县', '高台县', '山丹县'] 3221 | }, 3222 | { 3223 | 'name': '平凉市', 3224 | 'areaList': ['崆峒区', '泾川县', '灵台县', '崇信县', '华亭县', '庄浪县', '静宁县'] 3225 | }, 3226 | { 3227 | 'name': '酒泉市', 3228 | 'areaList': ['肃州区', '金塔县', '安西县', '肃北蒙古族自治县', '阿克塞哈萨克族自治县', '玉门市', '敦煌市'] 3229 | }, 3230 | { 3231 | 'name': '庆阳市', 3232 | 'areaList': ['西峰区', '庆城县', '环 县', '华池县', '合水县', '正宁县', '宁 县', '镇原县'] 3233 | }, 3234 | { 3235 | 'name': '定西市', 3236 | 'areaList': ['安定区', '通渭县', '陇西县', '渭源县', '临洮县', '漳 县', '岷 县'] 3237 | }, 3238 | { 3239 | 'name': '陇南市', 3240 | 'areaList': [ 3241 | '武都区', 3242 | '成 县', 3243 | '文 县', 3244 | '宕昌县', 3245 | '康 县', 3246 | '西和县', 3247 | '礼 县', 3248 | '徽 县', 3249 | '两当县' 3250 | ] 3251 | }, 3252 | { 3253 | 'name': '临夏回族自治州', 3254 | 'areaList': [ 3255 | '临夏市', 3256 | '临夏县', 3257 | '康乐县', 3258 | '永靖县', 3259 | '广河县', 3260 | '和政县', 3261 | '东乡族自治县', 3262 | '积石山保安族东乡族撒拉族自治县' 3263 | ] 3264 | }, 3265 | { 3266 | 'name': '甘南藏族自治州', 3267 | 'areaList': ['合作市', '临潭县', '卓尼县', '舟曲县', '迭部县', '玛曲县', '碌曲县', '夏河县'] 3268 | } 3269 | ] 3270 | }, 3271 | { 3272 | 'name': '青海', 3273 | 'cityList': [ 3274 | { 3275 | 'name': '西宁市', 3276 | 'areaList': ['城东区', '城中区', '城西区', '城北区', '大通回族土族自治县', '湟中县', '湟源县'] 3277 | }, 3278 | { 3279 | 'name': '海东地区', 3280 | 'areaList': ['平安县', '民和回族土族自治县', '乐都县', '互助土族自治县', '化隆回族自治县', '循化撒拉族自治县'] 3281 | }, 3282 | { 3283 | 'name': '海北藏族自治州', 3284 | 'areaList': ['门源回族自治县', '祁连县', '海晏县', '刚察县'] 3285 | }, 3286 | { 3287 | 'name': '黄南藏族自治州', 3288 | 'areaList': ['同仁县', '尖扎县', '泽库县', '河南蒙古族自治县'] 3289 | }, 3290 | { 3291 | 'name': '海南藏族自治州', 3292 | 'areaList': ['共和县', '同德县', '贵德县', '兴海县', '贵南县'] 3293 | }, 3294 | { 3295 | 'name': '果洛藏族自治州', 3296 | 'areaList': ['玛沁县', '班玛县', '甘德县', '达日县', '久治县', '玛多县'] 3297 | }, 3298 | { 3299 | 'name': '玉树藏族自治州', 3300 | 'areaList': ['玉树县', '杂多县', '称多县', '治多县', '囊谦县', '曲麻莱县'] 3301 | }, 3302 | { 3303 | 'name': '海西蒙古族藏族自治州', 3304 | 'areaList': ['格尔木市', '德令哈市', '乌兰县', '都兰县', '天峻县'] 3305 | } 3306 | ] 3307 | }, 3308 | { 3309 | 'name': '宁夏', 3310 | 'cityList': [ 3311 | { 3312 | 'name': '银川市', 3313 | 'areaList': ['兴庆区', '西夏区', '金凤区', '永宁县', '贺兰县', '灵武市'] 3314 | }, 3315 | { 3316 | 'name': '石嘴山市', 3317 | 'areaList': ['大武口区', '惠农区', '平罗县'] 3318 | }, 3319 | { 3320 | 'name': '吴忠市', 3321 | 'areaList': ['利通区', '盐池县', '同心县', '青铜峡市'] 3322 | }, 3323 | { 3324 | 'name': '固原市', 3325 | 'areaList': ['原州区', '西吉县', '隆德县', '泾源县', '彭阳县', '海原县'] 3326 | }, 3327 | { 3328 | 'name': '中卫市', 3329 | 'areaList': ['沙坡头区', '中宁县'] 3330 | } 3331 | ] 3332 | }, 3333 | { 3334 | 'name': '新疆', 3335 | 'cityList': [ 3336 | { 3337 | 'name': '乌鲁木齐市', 3338 | 'areaList': [ 3339 | '天山区', 3340 | '沙依巴克区', 3341 | '新市区', 3342 | '水磨沟区', 3343 | '头屯河区', 3344 | '达坂城区', 3345 | '东山区', 3346 | '乌鲁木齐县' 3347 | ] 3348 | }, 3349 | { 3350 | 'name': '克拉玛依市', 3351 | 'areaList': ['独山子区', '克拉玛依区', '白碱滩区', '乌尔禾区'] 3352 | }, 3353 | { 3354 | 'name': '吐鲁番地区', 3355 | 'areaList': ['吐鲁番市', '鄯善县', '托克逊县'] 3356 | }, 3357 | { 3358 | 'name': '哈密地区', 3359 | 'areaList': ['哈密市', '巴里坤哈萨克自治县', '伊吾县'] 3360 | }, 3361 | { 3362 | 'name': '昌吉回族自治州', 3363 | 'areaList': [ 3364 | '昌吉市', 3365 | '阜康市', 3366 | '米泉市', 3367 | '呼图壁县', 3368 | '玛纳斯县', 3369 | '奇台县', 3370 | '吉木萨尔县', 3371 | '木垒哈萨克自治县' 3372 | ] 3373 | }, 3374 | { 3375 | 'name': '博尔塔拉蒙古自治州', 3376 | 'areaList': ['博乐市', '精河县', '温泉县'] 3377 | }, 3378 | { 3379 | 'name': '巴音郭楞蒙古自治州', 3380 | 'areaList': [ 3381 | '库尔勒市', 3382 | '轮台县', 3383 | '尉犁县', 3384 | '若羌县', 3385 | '且末县', 3386 | '焉耆回族自治县', 3387 | '和静县', 3388 | '和硕县', 3389 | '博湖县' 3390 | ] 3391 | }, 3392 | { 3393 | 'name': '阿克苏地区', 3394 | 'areaList': [ 3395 | '阿克苏市', 3396 | '温宿县', 3397 | '库车县', 3398 | '沙雅县', 3399 | '新和县', 3400 | '拜城县', 3401 | '乌什县', 3402 | '阿瓦提县', 3403 | '柯坪县' 3404 | ] 3405 | }, 3406 | { 3407 | 'name': '克孜勒苏柯尔克孜自治州', 3408 | 'areaList': ['阿图什市', '阿克陶县', '阿合奇县', '乌恰县'] 3409 | }, 3410 | { 3411 | 'name': '喀什地区', 3412 | 'areaList': [ 3413 | '喀什市', 3414 | '疏附县', 3415 | '疏勒县', 3416 | '英吉沙县', 3417 | '泽普县', 3418 | '莎车县', 3419 | '叶城县', 3420 | '麦盖提县', 3421 | '岳普湖县', 3422 | '伽师县', 3423 | '巴楚县', 3424 | '塔什库尔干塔吉克自治县' 3425 | ] 3426 | }, 3427 | { 3428 | 'name': '和田地区', 3429 | 'areaList': ['和田市', '和田县', '墨玉县', '皮山县', '洛浦县', '策勒县', '于田县', '民丰县'] 3430 | }, 3431 | { 3432 | 'name': '伊犁哈萨克自治州', 3433 | 'areaList': [ 3434 | '伊宁市', 3435 | '奎屯市', 3436 | '伊宁县', 3437 | '察布查尔锡伯自治县', 3438 | '霍城县', 3439 | '巩留县', 3440 | '新源县', 3441 | '昭苏县', 3442 | '特克斯县', 3443 | '尼勒克县' 3444 | ] 3445 | }, 3446 | { 3447 | 'name': '塔城地区', 3448 | 'areaList': ['塔城市', '乌苏市', '额敏县', '沙湾县', '托里县', '裕民县', '和布克赛尔蒙古自治县'] 3449 | }, 3450 | { 3451 | 'name': '阿勒泰地区', 3452 | 'areaList': ['阿勒泰市', '布尔津县', '富蕴县', '福海县', '哈巴河县', '青河县', '吉木乃县'] 3453 | }, 3454 | { 3455 | 'name': '省直辖行政单位', 3456 | 'areaList': ['石河子市', '阿拉尔市', '图木舒克市', '五家渠市'] 3457 | } 3458 | ] 3459 | }, 3460 | { 3461 | 'name': '台湾', 3462 | 'cityList': [ 3463 | { 3464 | 'areaList': [ 3465 | '台北市', 3466 | '高雄市', 3467 | '基隆市', 3468 | '台中市', 3469 | '台南市', 3470 | '新竹市', 3471 | '嘉义市', 3472 | '宜兰县', 3473 | '桃园县', 3474 | '新竹县', 3475 | '苗栗县', 3476 | '彰化县', 3477 | '南投县', 3478 | '云林县', 3479 | '嘉义县', 3480 | '花莲县' 3481 | ] 3482 | } 3483 | ] 3484 | }, 3485 | { 3486 | 'name': '香港', 3487 | 'cityList': [ 3488 | { 3489 | 'areaList': [ 3490 | '中西区', 3491 | '东区', 3492 | '九龙城区', 3493 | '观塘区', 3494 | '南区', 3495 | '深水埗区', 3496 | '黄大仙区', 3497 | '湾仔区', 3498 | '油尖旺区', 3499 | '离岛区', 3500 | '葵青区', 3501 | '北区', 3502 | '西贡区', 3503 | '沙田区', 3504 | '屯门区', 3505 | '大埔区', 3506 | '荃湾区', 3507 | '元朗区' 3508 | ] 3509 | } 3510 | ] 3511 | }, 3512 | { 3513 | 'name': '澳门', 3514 | 'cityList': [ 3515 | { 3516 | 'areaList': ['澳门特别行政区'] 3517 | } 3518 | ] 3519 | }, 3520 | { 3521 | 'name': '海外', 3522 | 'cityList': [ 3523 | { 3524 | 'areaList': ['海外国家'] 3525 | } 3526 | ] 3527 | } 3528 | ]; 3529 | 3530 | 3531 | class Locations { 3532 | static var provinces = locations.map((f) => f['name']).toList(); 3533 | 3534 | static getCities(String province) { 3535 | var cities = locations.where((f) => f['name'] == province).toList(); 3536 | cities = cities[0]['cityList']; 3537 | if (cities == null || cities.length <= 1 || cities[0]['name'] == null) { 3538 | return [{ 3539 | 'name': province, 3540 | 'areaList': cities[0]['areaList'] 3541 | }]; 3542 | } else { 3543 | return cities; 3544 | } 3545 | } 3546 | 3547 | static getTowns(String city, cities) { 3548 | var towns = cities.where((f) => f['name'] == city).toList(); 3549 | towns = towns[0]['areaList']; 3550 | if (towns == null || towns.length == 0) { 3551 | return [city]; 3552 | } else { 3553 | return towns; 3554 | } 3555 | } 3556 | } -------------------------------------------------------------------------------- /pubspec.lock: -------------------------------------------------------------------------------- 1 | # Generated by pub 2 | # See https://www.dartlang.org/tools/pub/glossary#lockfile 3 | packages: 4 | analyzer: 5 | dependency: transitive 6 | description: 7 | name: analyzer 8 | url: "https://pub.dartlang.org" 9 | source: hosted 10 | version: "0.32.4" 11 | args: 12 | dependency: transitive 13 | description: 14 | name: args 15 | url: "https://pub.dartlang.org" 16 | source: hosted 17 | version: "1.5.0" 18 | async: 19 | dependency: transitive 20 | description: 21 | name: async 22 | url: "https://pub.dartlang.org" 23 | source: hosted 24 | version: "2.0.8" 25 | boolean_selector: 26 | dependency: transitive 27 | description: 28 | name: boolean_selector 29 | url: "https://pub.dartlang.org" 30 | source: hosted 31 | version: "1.0.4" 32 | charcode: 33 | dependency: transitive 34 | description: 35 | name: charcode 36 | url: "https://pub.dartlang.org" 37 | source: hosted 38 | version: "1.1.2" 39 | collection: 40 | dependency: transitive 41 | description: 42 | name: collection 43 | url: "https://pub.dartlang.org" 44 | source: hosted 45 | version: "1.14.11" 46 | convert: 47 | dependency: transitive 48 | description: 49 | name: convert 50 | url: "https://pub.dartlang.org" 51 | source: hosted 52 | version: "2.0.2" 53 | crypto: 54 | dependency: transitive 55 | description: 56 | name: crypto 57 | url: "https://pub.dartlang.org" 58 | source: hosted 59 | version: "2.0.6" 60 | csslib: 61 | dependency: transitive 62 | description: 63 | name: csslib 64 | url: "https://pub.dartlang.org" 65 | source: hosted 66 | version: "0.14.5" 67 | cupertino_icons: 68 | dependency: "direct main" 69 | description: 70 | name: cupertino_icons 71 | url: "https://pub.dartlang.org" 72 | source: hosted 73 | version: "0.1.2" 74 | flutter: 75 | dependency: "direct main" 76 | description: flutter 77 | source: sdk 78 | version: "0.0.0" 79 | flutter_test: 80 | dependency: "direct dev" 81 | description: flutter 82 | source: sdk 83 | version: "0.0.0" 84 | front_end: 85 | dependency: transitive 86 | description: 87 | name: front_end 88 | url: "https://pub.dartlang.org" 89 | source: hosted 90 | version: "0.1.4" 91 | glob: 92 | dependency: transitive 93 | description: 94 | name: glob 95 | url: "https://pub.dartlang.org" 96 | source: hosted 97 | version: "1.1.7" 98 | html: 99 | dependency: transitive 100 | description: 101 | name: html 102 | url: "https://pub.dartlang.org" 103 | source: hosted 104 | version: "0.13.3+3" 105 | http: 106 | dependency: transitive 107 | description: 108 | name: http 109 | url: "https://pub.dartlang.org" 110 | source: hosted 111 | version: "0.11.3+17" 112 | http_multi_server: 113 | dependency: transitive 114 | description: 115 | name: http_multi_server 116 | url: "https://pub.dartlang.org" 117 | source: hosted 118 | version: "2.0.5" 119 | http_parser: 120 | dependency: transitive 121 | description: 122 | name: http_parser 123 | url: "https://pub.dartlang.org" 124 | source: hosted 125 | version: "3.1.3" 126 | io: 127 | dependency: transitive 128 | description: 129 | name: io 130 | url: "https://pub.dartlang.org" 131 | source: hosted 132 | version: "0.3.3" 133 | js: 134 | dependency: transitive 135 | description: 136 | name: js 137 | url: "https://pub.dartlang.org" 138 | source: hosted 139 | version: "0.6.1+1" 140 | json_rpc_2: 141 | dependency: transitive 142 | description: 143 | name: json_rpc_2 144 | url: "https://pub.dartlang.org" 145 | source: hosted 146 | version: "2.0.9" 147 | kernel: 148 | dependency: transitive 149 | description: 150 | name: kernel 151 | url: "https://pub.dartlang.org" 152 | source: hosted 153 | version: "0.3.4" 154 | logging: 155 | dependency: transitive 156 | description: 157 | name: logging 158 | url: "https://pub.dartlang.org" 159 | source: hosted 160 | version: "0.11.3+2" 161 | matcher: 162 | dependency: transitive 163 | description: 164 | name: matcher 165 | url: "https://pub.dartlang.org" 166 | source: hosted 167 | version: "0.12.3+1" 168 | meta: 169 | dependency: transitive 170 | description: 171 | name: meta 172 | url: "https://pub.dartlang.org" 173 | source: hosted 174 | version: "1.1.6" 175 | mime: 176 | dependency: transitive 177 | description: 178 | name: mime 179 | url: "https://pub.dartlang.org" 180 | source: hosted 181 | version: "0.9.6+2" 182 | multi_server_socket: 183 | dependency: transitive 184 | description: 185 | name: multi_server_socket 186 | url: "https://pub.dartlang.org" 187 | source: hosted 188 | version: "1.0.2" 189 | node_preamble: 190 | dependency: transitive 191 | description: 192 | name: node_preamble 193 | url: "https://pub.dartlang.org" 194 | source: hosted 195 | version: "1.4.4" 196 | package_config: 197 | dependency: transitive 198 | description: 199 | name: package_config 200 | url: "https://pub.dartlang.org" 201 | source: hosted 202 | version: "1.0.5" 203 | package_resolver: 204 | dependency: transitive 205 | description: 206 | name: package_resolver 207 | url: "https://pub.dartlang.org" 208 | source: hosted 209 | version: "1.0.4" 210 | path: 211 | dependency: transitive 212 | description: 213 | name: path 214 | url: "https://pub.dartlang.org" 215 | source: hosted 216 | version: "1.6.2" 217 | plugin: 218 | dependency: transitive 219 | description: 220 | name: plugin 221 | url: "https://pub.dartlang.org" 222 | source: hosted 223 | version: "0.2.0+3" 224 | pool: 225 | dependency: transitive 226 | description: 227 | name: pool 228 | url: "https://pub.dartlang.org" 229 | source: hosted 230 | version: "1.3.6" 231 | pub_semver: 232 | dependency: transitive 233 | description: 234 | name: pub_semver 235 | url: "https://pub.dartlang.org" 236 | source: hosted 237 | version: "1.4.2" 238 | quiver: 239 | dependency: transitive 240 | description: 241 | name: quiver 242 | url: "https://pub.dartlang.org" 243 | source: hosted 244 | version: "2.0.0+1" 245 | shelf: 246 | dependency: transitive 247 | description: 248 | name: shelf 249 | url: "https://pub.dartlang.org" 250 | source: hosted 251 | version: "0.7.3+3" 252 | shelf_packages_handler: 253 | dependency: transitive 254 | description: 255 | name: shelf_packages_handler 256 | url: "https://pub.dartlang.org" 257 | source: hosted 258 | version: "1.0.4" 259 | shelf_static: 260 | dependency: transitive 261 | description: 262 | name: shelf_static 263 | url: "https://pub.dartlang.org" 264 | source: hosted 265 | version: "0.2.8" 266 | shelf_web_socket: 267 | dependency: transitive 268 | description: 269 | name: shelf_web_socket 270 | url: "https://pub.dartlang.org" 271 | source: hosted 272 | version: "0.2.2+4" 273 | sky_engine: 274 | dependency: transitive 275 | description: flutter 276 | source: sdk 277 | version: "0.0.99" 278 | source_map_stack_trace: 279 | dependency: transitive 280 | description: 281 | name: source_map_stack_trace 282 | url: "https://pub.dartlang.org" 283 | source: hosted 284 | version: "1.1.5" 285 | source_maps: 286 | dependency: transitive 287 | description: 288 | name: source_maps 289 | url: "https://pub.dartlang.org" 290 | source: hosted 291 | version: "0.10.7" 292 | source_span: 293 | dependency: transitive 294 | description: 295 | name: source_span 296 | url: "https://pub.dartlang.org" 297 | source: hosted 298 | version: "1.4.1" 299 | stack_trace: 300 | dependency: transitive 301 | description: 302 | name: stack_trace 303 | url: "https://pub.dartlang.org" 304 | source: hosted 305 | version: "1.9.3" 306 | stream_channel: 307 | dependency: transitive 308 | description: 309 | name: stream_channel 310 | url: "https://pub.dartlang.org" 311 | source: hosted 312 | version: "1.6.8" 313 | string_scanner: 314 | dependency: transitive 315 | description: 316 | name: string_scanner 317 | url: "https://pub.dartlang.org" 318 | source: hosted 319 | version: "1.0.4" 320 | term_glyph: 321 | dependency: transitive 322 | description: 323 | name: term_glyph 324 | url: "https://pub.dartlang.org" 325 | source: hosted 326 | version: "1.0.1" 327 | test: 328 | dependency: transitive 329 | description: 330 | name: test 331 | url: "https://pub.dartlang.org" 332 | source: hosted 333 | version: "1.3.0" 334 | typed_data: 335 | dependency: transitive 336 | description: 337 | name: typed_data 338 | url: "https://pub.dartlang.org" 339 | source: hosted 340 | version: "1.1.6" 341 | utf: 342 | dependency: transitive 343 | description: 344 | name: utf 345 | url: "https://pub.dartlang.org" 346 | source: hosted 347 | version: "0.9.0+5" 348 | vector_math: 349 | dependency: transitive 350 | description: 351 | name: vector_math 352 | url: "https://pub.dartlang.org" 353 | source: hosted 354 | version: "2.0.8" 355 | vm_service_client: 356 | dependency: transitive 357 | description: 358 | name: vm_service_client 359 | url: "https://pub.dartlang.org" 360 | source: hosted 361 | version: "0.2.6" 362 | watcher: 363 | dependency: transitive 364 | description: 365 | name: watcher 366 | url: "https://pub.dartlang.org" 367 | source: hosted 368 | version: "0.9.7+10" 369 | web_socket_channel: 370 | dependency: transitive 371 | description: 372 | name: web_socket_channel 373 | url: "https://pub.dartlang.org" 374 | source: hosted 375 | version: "1.0.9" 376 | yaml: 377 | dependency: transitive 378 | description: 379 | name: yaml 380 | url: "https://pub.dartlang.org" 381 | source: hosted 382 | version: "2.1.15" 383 | sdks: 384 | dart: ">=2.0.0-dev.68.0 <3.0.0" 385 | flutter: ">=0.4.1 <1.0.0" 386 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: flutter_location_picker 2 | description: select position. 3 | version: 0.0.6 4 | 5 | author: chengda 6 | homepage: https://github.com/best-flutter/flutter_location_picker 7 | documentation: https://github.com/best-flutter/flutter_location_picker 8 | 9 | dependencies: 10 | flutter: 11 | sdk: flutter 12 | 13 | cupertino_icons: ^0.1.2 14 | 15 | dev_dependencies: 16 | flutter_test: 17 | sdk: flutter 18 | 19 | flutter: 20 | uses-material-design: true 21 | 22 | environment: 23 | sdk: ">=1.19.0 <3.0.0" 24 | flutter: ">=0.4.1 <1.0.0" -------------------------------------------------------------------------------- /res/values/strings_en.arb: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /test/widget_test.dart: -------------------------------------------------------------------------------- 1 | // This is a basic Flutter widget test. 2 | // To perform an interaction with a widget in your test, use the WidgetTester utility that Flutter 3 | // provides. For example, you can send tap and scroll gestures. You can also use WidgetTester to 4 | // find child widgets in the widget tree, read text, and verify that the values of widget properties 5 | // are correct. 6 | 7 | import 'package:flutter/material.dart'; 8 | import 'package:flutter_test/flutter_test.dart'; 9 | 10 | import 'package:flutter_location_picker/flutter_location_picker.dart'; 11 | 12 | void main() { 13 | testWidgets('Counter increments smoke test', (WidgetTester tester) async { 14 | // Build our app and trigger a frame. 15 | // await tester.pumpWidget(new MyApp()); 16 | // 17 | // // Verify that our counter starts at 0. 18 | // expect(find.text('0'), findsOneWidget); 19 | // expect(find.text('1'), findsNothing); 20 | // 21 | // // Tap the '+' icon and trigger a frame. 22 | // await tester.tap(find.byIcon(Icons.add)); 23 | // await tester.pump(); 24 | //// 25 | // // Verify that our counter has incremented. 26 | // expect(find.text('0'), findsNothing); 27 | // expect(find.text('1'), findsOneWidget); 28 | }); 29 | } 30 | --------------------------------------------------------------------------------