├── .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 | 
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 | 
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 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
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 |
--------------------------------------------------------------------------------