diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/CarInfoTabView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/CarInfoTabView.kt index 6c28c3b19d..c6858591ac 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/CarInfoTabView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/CarInfoTabView.kt @@ -25,6 +25,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI import com.mogo.eagle.core.utilcode.util.AppUtils +import com.mogo.eagle.core.utilcode.util.NetworkUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.map.MogoData @@ -118,14 +119,15 @@ class CarInfoTabView @JvmOverloads constructor( if (isHDCached) { // 已缓存 ToastUtils.showShort(resources.getString(R.string.offline_had_downloaded)) } else {// 未缓存 + if(!NetworkUtils.isConnected(context)){ + ToastUtils.showShort(resources.getString(R.string.offline_update_tip)) + return@setOnClickListener + } if (CallerMapUIServiceManager.getCityCode().isNullOrEmpty()) {// 未拿到高德的cityCode if ((CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().longitude <= 0.0 && CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().latitude <= 0.0)) {// 未拿到高精的经纬度 ToastUtils.showShort(resources.getString(R.string.location_try_again)) } else { // 拿到了高精的经纬度 - val dialog = OfflineMapDialog(context) - dialog.location = - CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84() - dialog.show() + OfflineMapDialog(context).show() } } else {// 拿到高德的cityCode OfflineMapDialog(context).show() diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt index 339afef14f..ef5876569c 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt @@ -269,6 +269,7 @@ import kotlinx.android.synthetic.main.view_debug_setting.view.tvCurEnv import kotlinx.android.synthetic.main.view_debug_setting.view.tvDriverServerStartupStatus import kotlinx.android.synthetic.main.view_debug_setting.view.tvGearInfo import kotlinx.android.synthetic.main.view_debug_setting.view.tvGitBranchInfo +import kotlinx.android.synthetic.main.view_debug_setting.view.tvHDCityCode import kotlinx.android.synthetic.main.view_debug_setting.view.tvIPCMac import kotlinx.android.synthetic.main.view_debug_setting.view.tvIdentifyInfo import kotlinx.android.synthetic.main.view_debug_setting.view.tvIdentifyInfoCopy @@ -2254,6 +2255,11 @@ internal class DebugSettingView @JvmOverloads constructor( }" ) + val cityCode = mogoMapData.get()?.getCityCode() + cityCode?.let { + tvHDCityCode.text = "$it" + } + tvObuConnectStatus.text = Html.fromHtml( "OBU连接状态:${ if (AppConfigInfo.isConnectObu) { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/OfflineMapDialog.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/OfflineMapDialog.kt index fdcde8b018..7ae39f703b 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/OfflineMapDialog.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/OfflineMapDialog.kt @@ -2,24 +2,19 @@ package com.mogo.eagle.core.function.hmi.ui.tools import android.annotation.SuppressLint import android.content.Context -import android.graphics.Color -import android.graphics.RectF -import android.graphics.drawable.ClipDrawable -import android.graphics.drawable.GradientDrawable -import android.graphics.drawable.LayerDrawable -import android.view.Gravity import android.view.View import android.widget.ImageView import android.widget.ProgressBar import android.widget.TextView import androidx.constraintlayout.widget.ConstraintLayout -import com.mogo.eagle.core.data.map.MogoLocation +import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager import com.mogo.eagle.core.function.call.hmi.CallerHmiListenerManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog import com.mogo.eagle.core.function.hmi.ui.utils.HmiActionLog.Companion.hmiAction import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI +import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.map.MogoData.Companion.mogoMapData import me.jessyan.autosize.utils.AutoSizeUtils @@ -29,7 +24,7 @@ import me.jessyan.autosize.utils.AutoSizeUtils */ class OfflineMapDialog(context: Context) : BaseFloatDialog(context) { - companion object{ + companion object { private const val TAG = "OfflineMapDialog" } @@ -44,11 +39,14 @@ class OfflineMapDialog(context: Context) : BaseFloatDialog(context) { private var downloadPercentView: TextView? = null private var downloadResultImg: ImageView? = null + @Volatile private var isLoading = false - private var isConfirm = true - private var isRetry = false - var location: MogoLocation? = null + @Volatile + private var isConfirm = true + + @Volatile + private var isRetry = false init { setContentView(R.layout.dialog_offline_map) @@ -73,6 +71,7 @@ class OfflineMapDialog(context: Context) : BaseFloatDialog(context) { showNewContent(isLoading = true, false) cacheHDOfflineData() } + else -> { dismiss() } @@ -85,6 +84,7 @@ class OfflineMapDialog(context: Context) : BaseFloatDialog(context) { showNewContent(isLoading = true, false) cacheHDOfflineData() } + else -> { dismiss() } @@ -100,21 +100,31 @@ class OfflineMapDialog(context: Context) : BaseFloatDialog(context) { } private fun cacheHDDataByCityByLonLat() { - mogoMapData.get()?.cacheHDDataByCityByLonLat(location!!, { _, progress -> + val loc = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84() + hmiAction( + "$M_HMI$TAG", + mapOf("click" to "cacheHDOfflineData", "hasLoc" to loc) + ) + if (loc.longitude > 0 && loc.latitude > 0) { + mogoMapData.get()?.cacheHDDataByCityByLonLat(loc, { _, progress -> updateProgress(progress.toInt()) - }, { _, state -> - if (state == 0) {// 失败 - showNewContent(isLoading = false, false) - } - }) + }, { _, state -> + if (state == 0) {// 失败 + showNewContent(isLoading = false, false) + } + }) + } else { + showNewContent(isLoading = false, false) + } } private fun cacheHDOfflineData() { - hmiAction( - "$M_HMI$TAG", - mapOf("click" to "cacheHDOfflineData","hasLoc" to (location != null)) - ) - if (location == null) {// 拿到了高德地图的cityCode + val cityCode = mogoMapData.get()?.getCityCode() + if (cityCode != null) {// 拿到了高德地图的cityCode + hmiAction( + "$M_HMI$TAG", + mapOf("click" to "cacheHDOfflineData", "hasCityCode" to cityCode) + ) mogoMapData.get()?.cacheHDDataByCity({ _, progress -> updateProgress(progress.toInt()) }, { _, state -> @@ -125,6 +135,7 @@ class OfflineMapDialog(context: Context) : BaseFloatDialog(context) { } else {// 只拿到了高精的经纬度 cacheHDDataByCityByLonLat() } + } @@ -134,7 +145,10 @@ class OfflineMapDialog(context: Context) : BaseFloatDialog(context) { progressBar?.let { if (it.visibility == View.VISIBLE) { it.progress = if (progress in 1..5) 5 else progress - val p = AutoSizeUtils.dp2px(context, 770f) * (it.progress / 100.0) - AutoSizeUtils.dp2px(context, 30f) + val p = AutoSizeUtils.dp2px( + context, + 770f + ) * (it.progress / 100.0) - AutoSizeUtils.dp2px(context, 30f) CallerLogger.i("$M_HMI$TAG", "updateProgress: $p , pro:${it.progress}") downloadPercentView?.translationX = p.toFloat() downloadPercentView?.text = "${it.progress}%" @@ -160,50 +174,54 @@ class OfflineMapDialog(context: Context) : BaseFloatDialog(context) { @SuppressLint("UseCompatLoadingForDrawables") private fun showNewContent(isLoading: Boolean, isSuccess: Boolean) { - this.isLoading = isLoading - change2NewStyle() - when { - isLoading -> { - downloadResultImg?.visibility = View.GONE - offlineTitleView?.visibility = View.GONE - downloadingTip?.visibility = View.VISIBLE - okView?.text = context.resources.getString(R.string.cancel) - } - else -> { - when { - isSuccess -> { - okView?.visibility = View.VISIBLE - okView?.text = context.resources.getString(R.string.ok_tip) - offlineTitleView?.visibility = View.VISIBLE - offlineTitleView?.text = - context.resources.getString(R.string.offline_download_success) - progressBar?.visibility = View.GONE - downloadPercentView?.visibility = View.GONE - downloadingTip?.visibility = View.GONE - downloadResultImg?.visibility = View.VISIBLE - downloadResultImg?.setImageDrawable(context.resources.getDrawable(R.drawable.icon_map_cache_success)) - hmiAction("$M_HMI$TAG", mapOf("cacheMap" to true)) - } - else -> { - isRetry = true - isConfirm = false - offlineTitleView?.visibility = View.VISIBLE - offlineTitleView?.text = - context.resources.getString(R.string.offline_download_failure) - okView?.visibility = View.GONE - progressBar?.visibility = View.GONE - downloadPercentView?.visibility = View.GONE - downloadingTip?.visibility = View.GONE - leftView?.visibility = View.VISIBLE - leftView?.text = context.resources.getString(R.string.ok_tip) - rightView?.visibility = View.VISIBLE - rightView?.text = context.resources.getString(R.string.retry) - downloadResultImg?.visibility = View.VISIBLE - downloadResultImg?.setImageDrawable(context.resources.getDrawable(R.drawable.icon_map_cache_failed)) - hmiAction("$M_HMI$TAG", mapOf("cacheMap" to false)) + UiThreadHandler.post({ + this.isLoading = isLoading + change2NewStyle() + when { + isLoading -> { + downloadResultImg?.visibility = View.GONE + offlineTitleView?.visibility = View.GONE + downloadingTip?.visibility = View.VISIBLE + okView?.text = context.resources.getString(R.string.cancel) + } + + else -> { + when { + isSuccess -> { + okView?.visibility = View.VISIBLE + okView?.text = context.resources.getString(R.string.ok_tip) + offlineTitleView?.visibility = View.VISIBLE + offlineTitleView?.text = + context.resources.getString(R.string.offline_download_success) + progressBar?.visibility = View.GONE + downloadPercentView?.visibility = View.GONE + downloadingTip?.visibility = View.GONE + downloadResultImg?.visibility = View.VISIBLE + downloadResultImg?.setImageDrawable(context.resources.getDrawable(R.drawable.icon_map_cache_success)) + hmiAction("$M_HMI$TAG", mapOf("cacheMap" to true)) + } + + else -> { + isRetry = true + isConfirm = false + offlineTitleView?.visibility = View.VISIBLE + offlineTitleView?.text = + context.resources.getString(R.string.offline_download_failure) + okView?.visibility = View.GONE + progressBar?.visibility = View.GONE + downloadPercentView?.visibility = View.GONE + downloadingTip?.visibility = View.GONE + leftView?.visibility = View.VISIBLE + leftView?.text = context.resources.getString(R.string.ok_tip) + rightView?.visibility = View.VISIBLE + rightView?.text = context.resources.getString(R.string.retry) + downloadResultImg?.visibility = View.VISIBLE + downloadResultImg?.setImageDrawable(context.resources.getDrawable(R.drawable.icon_map_cache_failed)) + hmiAction("$M_HMI$TAG", mapOf("cacheMap" to false)) + } } } } - } + }, UiThreadHandler.MODE.QUEUE) } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SystemVersionView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SystemVersionView.kt index 8b4e320bed..b347e768b8 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SystemVersionView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SystemVersionView.kt @@ -145,13 +145,15 @@ class SystemVersionView @JvmOverloads constructor( if (isHDCached) {// 已缓存 ToastUtils.showShort(resources.getString(R.string.offline_had_downloaded)) } else {// 未缓存 + if(!NetworkUtils.isConnected(context)){ + ToastUtils.showShort(resources.getString(R.string.offline_update_tip)) + return@setOnClickListener + } if (CallerMapUIServiceManager.getCityCode().isNullOrEmpty()) {// 未拿到高德的cityCode if ((getChassisLocationWGS84().longitude <= 0.0 && getChassisLocationWGS84().latitude <= 0.0)) {// 未拿到高精的经纬度 ToastUtils.showShort(resources.getString(R.string.location_try_again)) } else {// 拿到了高精的经纬度 - val dialog = OfflineMapDialog(context) - dialog.location = getChassisLocationWGS84() - dialog.show() + OfflineMapDialog(context).show() } } else {// 拿到高德的cityCode OfflineMapDialog(context).show() diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml index cfad45423c..5675ecbf28 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml @@ -618,6 +618,17 @@ android:layout_height="1dp" android:background="#F0F0F0" /> + + + + 离线地图下载成功 离线地图下载失败 当前已为最新版本 + 请检查网络连接是否正常 请检查定位是否正常 确定 重试 diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/IMogoData.kt b/libraries/mogo-map-api/src/main/java/com/mogo/map/IMogoData.kt index e8fad00b35..abc831d808 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/IMogoData.kt +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/IMogoData.kt @@ -81,6 +81,8 @@ interface IMogoData { */ fun getTileId(lon: Double, lat: Double): Long + fun getCityCode(): Int? + /** * 通过cityCode,缓存城市HDMap */ diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/MapDataWrapper.kt b/libraries/mogo-map/src/main/java/com/mogo/map/MapDataWrapper.kt index 3c581ec2ce..b87e1ed44a 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/MapDataWrapper.kt +++ b/libraries/mogo-map/src/main/java/com/mogo/map/MapDataWrapper.kt @@ -176,6 +176,11 @@ object MapDataWrapper : IMogoData { return MapAutoApi.getTileID(lon, lat, 13) // 13为默认获取瓦片层级级别 } + @Synchronized + override fun getCityCode(): Int? { + return getHDCityCode(gdLocationClient.lastCityCode) + } + /** * 通过cityCode获取HDMap对应缓存城市 */ @@ -187,8 +192,8 @@ object MapDataWrapper : IMogoData { val gdCityCode = gdLocationClient.lastCityCode i(M_MAP + TAG, "gdCityCode is:$gdCityCode") val id = getHDCityCode(gdCityCode) - id?.let { - MapDataApi.cacheHDDataByCity(it, object : OnHdDataDownByCityListener { + if (id != null && id > 0) { + MapDataApi.cacheHDDataByCity(id, object : OnHdDataDownByCityListener { override fun onMapHDDataCacheProgressByCity(id: Int, p: Double) { progress.invoke(id, p * 100) } @@ -197,7 +202,10 @@ object MapDataWrapper : IMogoData { result.invoke(id, state) } }) + }else{ + result.invoke(0, 0) } + } /** @@ -305,13 +313,23 @@ object MapDataWrapper : IMogoData { } @Synchronized - override fun getBusStation(routeList: ArrayList, resultUnit:((MutableList) -> Unit)) { + override fun getBusStation( + routeList: ArrayList, + resultUnit: ((MutableList) -> Unit) + ) { val resultList = mutableListOf() MapDataApi.getBusStation(routeList, object : IResult { override fun result(code: Int, result: RoutePath?) { result?.steps?.forEach { it?.busStations.forEach { - val busStation = BusStation(it.busStationPoints, it.id.toLong() , it.roadId, it.type, -1, -1) + val busStation = BusStation( + it.busStationPoints, + it.id.toLong(), + it.roadId, + it.type, + -1, + -1 + ) resultList.add(busStation) } } @@ -332,7 +350,15 @@ object MapDataWrapper : IMogoData { override fun result(code: Int, result: RoadCross?) { try { Logger.d(TAG, "getCrossRoad --- 1 - 1 ---") - temp.set(CrossRoad(result?.status ?: 0, result?.tile_id ?: "", result?.cross_id ?: "", result?.tile_id_end ?: "", result?.cross_id_end ?: "")) + temp.set( + CrossRoad( + result?.status ?: 0, + result?.tile_id ?: "", + result?.cross_id ?: "", + result?.tile_id_end ?: "", + result?.cross_id_end ?: "" + ) + ) } finally { latch.countDown() } diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/utils/HDMapUtils.kt b/libraries/mogo-map/src/main/java/com/mogo/map/utils/HDMapUtils.kt index 5cb804f9ad..6ef5e36c2c 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/utils/HDMapUtils.kt +++ b/libraries/mogo-map/src/main/java/com/mogo/map/utils/HDMapUtils.kt @@ -17,360 +17,360 @@ object HDMapUtils { //河北 map["0311"] = 1301 //石家庄市 -// map["0315"] = 1302 //唐山市 -// map["0335"] = 1303 //秦皇岛市 -// map["0310"] = 1304 //邯郸市 -// map["0319"] = 1305 //邢台市 + map["0315"] = 1302 //唐山市 + map["0335"] = 1303 //秦皇岛市 + map["0310"] = 1304 //邯郸市 + map["0319"] = 1305 //邢台市 map["0312"] = 1306 //保定市 -// map["0313"] = 1307 //张家口市 -// map["0314"] = 1308 //承德市 -// map["0317"] = 1309 //沧州市 + map["0313"] = 1307 //张家口市 + map["0314"] = 1308 //承德市 + map["0317"] = 1309 //沧州市 map["0316"] = 1310 //廊坊市 -// map["0318"] = 1311 //衡水市 + map["0318"] = 1311 //衡水市 //山西 -// map["0351"] = 1401 //太原市 -// map["0352"] = 1402 //大同市 -// map["0353"] = 1403 //阳泉市 -// map["0355"] = 1404 //长治市 -// map["0356"] = 1405 //晋城市 -// map["0349"] = 1406 //朔州市 -// map["0354"] = 1407 //晋中市 -// map["0359"] = 1408 //运城市 -// map["0350"] = 1409 //忻州市 -// map["0357"] = 1410 //临汾市 -// map["0358"] = 1411 //吕梁市 + map["0351"] = 1401 //太原市 + map["0352"] = 1402 //大同市 + map["0353"] = 1403 //阳泉市 + map["0355"] = 1404 //长治市 + map["0356"] = 1405 //晋城市 + map["0349"] = 1406 //朔州市 + map["0354"] = 1407 //晋中市 + map["0359"] = 1408 //运城市 + map["0350"] = 1409 //忻州市 + map["0357"] = 1410 //临汾市 + map["0358"] = 1411 //吕梁市 //内蒙古 map["0471"] = 1501 //呼和浩特市 map["0472"] = 1502 //包头市 -// map["0473"] = 1503 //乌海市 -// map["0476"] = 1504 //赤峰市 -// map["0475"] = 1505 //通辽市 + map["0473"] = 1503 //乌海市 + map["0476"] = 1504 //赤峰市 + map["0475"] = 1505 //通辽市 map["0477"] = 1506 //鄂尔多斯市 map["0470"] = 1507 //呼伦贝尔市 -// map["0478"] = 1508 //巴彦淖尔市 -// map["0474"] = 1509 //乌兰察布市 -// map["0482"] = 1522 //兴安盟 + map["0478"] = 1508 //巴彦淖尔市 + map["0474"] = 1509 //乌兰察布市 + map["0482"] = 1522 //兴安盟 map["0479"] = 1525 //锡林郭勒盟 -// map["0483"] = 1529 //阿拉善盟 + map["0483"] = 1529 //阿拉善盟 //辽宁 -// map["0411"] = 2102 //大连市 -// map["0412"] = 2103 //鞍山市 -// map["0413"] = 2104 //抚顺市 -// map["0414"] = 2105 //本溪市 -// map["0415"] = 2106 //丹东市 -// map["0416"] = 2107 //锦州市 -// map["0417"] = 2108 //营口市 -// map["0418"] = 2109 //阜新市 -// map["0419"] = 2110 //辽阳市 -// map["0427"] = 2111 //盘锦市 -// map["0410"] = 2112 //铁岭市 -// map["0421"] = 2113 //朝阳市 -// map["0429"] = 2114 //葫芦岛市 + map["0411"] = 2102 //大连市 + map["0412"] = 2103 //鞍山市 + map["0413"] = 2104 //抚顺市 + map["0414"] = 2105 //本溪市 + map["0415"] = 2106 //丹东市 + map["0416"] = 2107 //锦州市 + map["0417"] = 2108 //营口市 + map["0418"] = 2109 //阜新市 + map["0419"] = 2110 //辽阳市 + map["0427"] = 2111 //盘锦市 + map["0410"] = 2112 //铁岭市 + map["0421"] = 2113 //朝阳市 + map["0429"] = 2114 //葫芦岛市 //吉林 map["0431"] = 2201 //长春市 map["0432"] = 2202 //吉林市 -// map["0434"] = 2203 //四平市 -// map["0437"] = 2204 //辽源市 -// map["0435"] = 2205 //通化市 -// map["0439"] = 2206 //白山市 -// map["0438"] = 2207 //松原市 -// map["0436"] = 2208 //白城市 -// map["1433"] = 2224 //延边朝鲜族自治州 + map["0434"] = 2203 //四平市 + map["0437"] = 2204 //辽源市 + map["0435"] = 2205 //通化市 + map["0439"] = 2206 //白山市 + map["0438"] = 2207 //松原市 + map["0436"] = 2208 //白城市 + map["1433"] = 2224 //延边朝鲜族自治州 //黑龙江 map["0451"] = 2301 //哈尔滨市 -// map["0452"] = 2302 //齐齐哈尔市 -// map["0467"] = 2303 //鸡西市 -// map["0468"] = 2304 //鹤岗市 -// map["0469"] = 2305 //双鸭山市 -// map["0459"] = 2306 //大庆市 -// map["0458"] = 2307 //伊春市 -// map["0454"] = 2308 //佳木斯市 -// map["0464"] = 2309 //七台河市 -// map["0453"] = 2310 //牡丹江市 -// map["0456"] = 2311 //黑河市 -// map["0455"] = 2312 //绥化市 -// map["0457"] = 2327 //大兴安岭地区 + map["0452"] = 2302 //齐齐哈尔市 + map["0467"] = 2303 //鸡西市 + map["0468"] = 2304 //鹤岗市 + map["0469"] = 2305 //双鸭山市 + map["0459"] = 2306 //大庆市 + map["0458"] = 2307 //伊春市 + map["0454"] = 2308 //佳木斯市 + map["0464"] = 2309 //七台河市 + map["0453"] = 2310 //牡丹江市 + map["0456"] = 2311 //黑河市 + map["0455"] = 2312 //绥化市 + map["0457"] = 2327 //大兴安岭地区 //江苏 map["0510"] = 3202 //无锡市 -// map["0516"] = 3203 //徐州市 -// map["0519"] = 3204 //常州市 + map["0516"] = 3203 //徐州市 + map["0519"] = 3204 //常州市 map["0512"] = 3205 //苏州市 -// map["0513"] = 3206 //南通市 -// map["0518"] = 3207 //连云港市 -// map["0517"] = 3208 //淮安市 -// map["0515"] = 3209 //盐城市 -// map["0514"] = 3210 //扬州市 -// map["0511"] = 3211 //镇江市 -// map["0523"] = 3212 //泰州市 -// map["0527"] = 3213 //宿迁市 + map["0513"] = 3206 //南通市 + map["0518"] = 3207 //连云港市 + map["0517"] = 3208 //淮安市 + map["0515"] = 3209 //盐城市 + map["0514"] = 3210 //扬州市 + map["0511"] = 3211 //镇江市 + map["0523"] = 3212 //泰州市 + map["0527"] = 3213 //宿迁市 //浙江 -// map["0571"] = 3301 //杭州市 -// map["0574"] = 3302 //宁波市 -// map["0577"] = 3303 //温州市 + map["0571"] = 3301 //杭州市 + map["0574"] = 3302 //宁波市 + map["0577"] = 3303 //温州市 map["0573"] = 3304 //嘉兴市 map["0572"] = 3305 //湖州市 -// map["0575"] = 3306 //绍兴市 -// map["0579"] = 3307 //金华市 -// map["0570"] = 3308 //衢州市 -// map["0580"] = 3309 //舟山市 -// map["0576"] = 3310 //台州市 -// map["0578"] = 3311 //丽水市 + map["0575"] = 3306 //绍兴市 + map["0579"] = 3307 //金华市 + map["0570"] = 3308 //衢州市 + map["0580"] = 3309 //舟山市 + map["0576"] = 3310 //台州市 + map["0578"] = 3311 //丽水市 //安徽 map["0551"] = 3401 //合肥市 -// map["0553"] = 3402 //芜湖市 -// map["0552"] = 3403 //蚌埠市 -// map["0554"] = 3404 //淮南市 -// map["0555"] = 3405 //马鞍山市 -// map["0561"] = 3406 //淮北市 -// map["0562"] = 3407 //铜陵市 -// map["0556"] = 3408 //安庆市 -// map["0559"] = 3410 //黄山市 -// map["0550"] = 3411 //滁州市 -// map["1558"] = 3412 //阜阳市 -// map["0557"] = 3413 //宿州市 -// map["0564"] = 3415 //六安市 -// map["0558"] = 3416 //亳州市 -// map["0566"] = 3417 //池州市 -// map["0563"] = 3418 //宣城市 + map["0553"] = 3402 //芜湖市 + map["0552"] = 3403 //蚌埠市 + map["0554"] = 3404 //淮南市 + map["0555"] = 3405 //马鞍山市 + map["0561"] = 3406 //淮北市 + map["0562"] = 3407 //铜陵市 + map["0556"] = 3408 //安庆市 + map["0559"] = 3410 //黄山市 + map["0550"] = 3411 //滁州市 + map["1558"] = 3412 //阜阳市 + map["0557"] = 3413 //宿州市 + map["0564"] = 3415 //六安市 + map["0558"] = 3416 //亳州市 + map["0566"] = 3417 //池州市 + map["0563"] = 3418 //宣城市 //福建 map["0591"] = 3501 //福州市 map["0592"] = 3502 //厦门市 -// map["0594"] = 3503 //莆田市 -// map["0598"] = 3504 //三明市 -// map["0595"] = 3505 //泉州市 -// map["0596"] = 3506 //漳州市 -// map["0599"] = 3507 //南平市 -// map["0597"] = 3508 //龙岩市 -// map["0593"] = 3509 //宁德市 + map["0594"] = 3503 //莆田市 + map["0598"] = 3504 //三明市 + map["0595"] = 3505 //泉州市 + map["0596"] = 3506 //漳州市 + map["0599"] = 3507 //南平市 + map["0597"] = 3508 //龙岩市 + map["0593"] = 3509 //宁德市 //江西 map["0791"] = 3601 //南昌市 -// map["0798"] = 3602 //景德镇市 -// map["0799"] = 3603 //萍乡市 -// map["0792"] = 3604 //九江市 -// map["0790"] = 3605 //新余市 -// map["0701"] = 3606 //鹰潭市 -// map["0797"] = 3607 //赣州市 -// map["0796"] = 3608 //吉安市 -// map["0795"] = 3609 //宜春市 -// map["0794"] = 3610 //抚州市 -// map["0793"] = 3611 //上饶市 + map["0798"] = 3602 //景德镇市 + map["0799"] = 3603 //萍乡市 + map["0792"] = 3604 //九江市 + map["0790"] = 3605 //新余市 + map["0701"] = 3606 //鹰潭市 + map["0797"] = 3607 //赣州市 + map["0796"] = 3608 //吉安市 + map["0795"] = 3609 //宜春市 + map["0794"] = 3610 //抚州市 + map["0793"] = 3611 //上饶市 //山东 map["0531"] = 3701 //济南市 -// map["0532"] = 3702 //青岛市 -// map["0533"] = 3703 //淄博市 -// map["0632"] = 3704 //枣庄市 -// map["0546"] = 3705 //东营市 + map["0532"] = 3702 //青岛市 + map["0533"] = 3703 //淄博市 + map["0632"] = 3704 //枣庄市 + map["0546"] = 3705 //东营市 map["0535"] = 3706 //烟台市 -// map["0536"] = 3707 //潍坊市 -// map["0537"] = 3708 //济宁市 -// map["0538"] = 3709 //泰安市 -// map["0631"] = 3710 //威海市 -// map["0633"] = 3711 //日照市 -// map["0539"] = 3713 //临沂市 -// map["0534"] = 3714 //德州市 -// map["0635"] = 3715 //聊城市 -// map["0543"] = 3716 //滨州市 -// map["0530"] = 3717 //菏泽市 + map["0536"] = 3707 //潍坊市 + map["0537"] = 3708 //济宁市 + map["0538"] = 3709 //泰安市 + map["0631"] = 3710 //威海市 + map["0633"] = 3711 //日照市 + map["0539"] = 3713 //临沂市 + map["0534"] = 3714 //德州市 + map["0635"] = 3715 //聊城市 + map["0543"] = 3716 //滨州市 + map["0530"] = 3717 //菏泽市 //河南 map["0371"] = 4101 //郑州市 -// map["0378"] = 4102 //开封市 -// map["0379"] = 4103 //洛阳市 -// map["0375"] = 4104 //平顶山市 -// map["0372"] = 4105 //安阳市 + map["0378"] = 4102 //开封市 + map["0379"] = 4103 //洛阳市 + map["0375"] = 4104 //平顶山市 + map["0372"] = 4105 //安阳市 map["0392"] = 4106 //鹤壁市 -// map["0373"] = 4107 //新乡市 -// map["0391"] = 4108 //焦作市 -// map["0393"] = 4109 //濮阳市 -// map["0374"] = 4110 //许昌市 -// map["0395"] = 4111 //漯河市 + map["0373"] = 4107 //新乡市 + map["0391"] = 4108 //焦作市 + map["0393"] = 4109 //濮阳市 + map["0374"] = 4110 //许昌市 + map["0395"] = 4111 //漯河市 map["0398"] = 4112 //三门峡市 -// map["0377"] = 4113 //南阳市 -// map["0370"] = 4114 //商丘市 -// map["0376"] = 4115 //信阳市 -// map["0394"] = 4116 //周口市 -// map["0396"] = 4117 //驻马店市 + map["0377"] = 4113 //南阳市 + map["0370"] = 4114 //商丘市 + map["0376"] = 4115 //信阳市 + map["0394"] = 4116 //周口市 + map["0396"] = 4117 //驻马店市 //湖北 -// map["0714"] = 4202 //黄石市 + map["0714"] = 4202 //黄石市 map["0719"] = 4203 //十堰市 -// map["0717"] = 4205 //宜昌市 -// map["0710"] = 4206 //襄阳市 + map["0717"] = 4205 //宜昌市 + map["0710"] = 4206 //襄阳市 map["0711"] = 4207 //鄂州市 -// map["0724"] = 4208 //荆门市 -// map["0712"] = 4209 //孝感市 -// map["0716"] = 4210 //荆州市 -// map["0713"] = 4211 //黄冈市 -// map["0715"] = 4212 //咸宁市 -// map["0722"] = 4213 //随州市 -// map["0718"] = 4228 //恩施土家族苗族自治州 + map["0724"] = 4208 //荆门市 + map["0712"] = 4209 //孝感市 + map["0716"] = 4210 //荆州市 + map["0713"] = 4211 //黄冈市 + map["0715"] = 4212 //咸宁市 + map["0722"] = 4213 //随州市 + map["0718"] = 4228 //恩施土家族苗族自治州 //湖南 map["0731"] = 4301 //长沙市 map["0733"] = 4302 //株洲市 -// map["0732"] = 4303 //湘潭市 + map["0732"] = 4303 //湘潭市 map["0734"] = 4304 //衡阳市 -// map["0739"] = 4305 //邵阳市 -// map["0730"] = 4306 //岳阳市 -// map["0736"] = 4307 //常德市 -// map["0744"] = 4308 //张家界市 -// map["0737"] = 4309 //益阳市 -// map["0735"] = 4310 //郴州市 -// map["0746"] = 4311 //永州市 -// map["0745"] = 4312 //怀化市 -// map["0738"] = 4313 //娄底市 -// map["0743"] = 4331 //湘西土家族苗族自治州 + map["0739"] = 4305 //邵阳市 + map["0730"] = 4306 //岳阳市 + map["0736"] = 4307 //常德市 + map["0744"] = 4308 //张家界市 + map["0737"] = 4309 //益阳市 + map["0735"] = 4310 //郴州市 + map["0746"] = 4311 //永州市 + map["0745"] = 4312 //怀化市 + map["0738"] = 4313 //娄底市 + map["0743"] = 4331 //湘西土家族苗族自治州 //广东 -// map["0751"] = 4402 //韶关市 + map["0751"] = 4402 //韶关市 map["0755"] = 4403 //深圳市 -// map["0756"] = 4404 //珠海市 -// map["0754"] = 4405 //汕头市 -// map["0757"] = 4406 //佛山市 -// map["0750"] = 4407 //江门市 -// map["0759"] = 4408 //湛江市 -// map["0668"] = 4409 //茂名市 -// map["0758"] = 4412 //肇庆市 -// map["0752"] = 4413 //惠州市 -// map["0753"] = 4414 //梅州市 -// map["0660"] = 4415 //汕尾市 -// map["0762"] = 4416 //河源市 -// map["0662"] = 4417 //阳江市 -// map["0763"] = 4418 //清远市 -// map["0769"] = 4419 //东莞市 -// map["0760"] = 4420 //中山市 -// map["0768"] = 4451 //潮州市 -// map["0663"] = 4452 //揭阳市 -// map["0766"] = 4453 //云浮市 + map["0756"] = 4404 //珠海市 + map["0754"] = 4405 //汕头市 + map["0757"] = 4406 //佛山市 + map["0750"] = 4407 //江门市 + map["0759"] = 4408 //湛江市 + map["0668"] = 4409 //茂名市 + map["0758"] = 4412 //肇庆市 + map["0752"] = 4413 //惠州市 + map["0753"] = 4414 //梅州市 + map["0660"] = 4415 //汕尾市 + map["0762"] = 4416 //河源市 + map["0662"] = 4417 //阳江市 + map["0763"] = 4418 //清远市 + map["0769"] = 4419 //东莞市 + map["0760"] = 4420 //中山市 + map["0768"] = 4451 //潮州市 + map["0663"] = 4452 //揭阳市 + map["0766"] = 4453 //云浮市 //广西 map["0771"] = 4501 //南宁市 map["0772"] = 4502 //柳州市 -// map["0773"] = 4503 //桂林市 -// map["0774"] = 4504 //梧州市 -// map["0779"] = 4505 //北海市 -// map["0770"] = 4506 //防城港市 -// map["0777"] = 4507 //钦州市 -// map["1755"] = 4508 //贵港市 -// map["0775"] = 4509 //玉林市 -// map["0776"] = 4510 //百色市 -// map["1774"] = 4511 //贺州市 -// map["0778"] = 4512 //河池市 -// map["1772"] = 4513 //来宾市 -// map["1771"] = 4514 //崇左市 + map["0773"] = 4503 //桂林市 + map["0774"] = 4504 //梧州市 + map["0779"] = 4505 //北海市 + map["0770"] = 4506 //防城港市 + map["0777"] = 4507 //钦州市 + map["1755"] = 4508 //贵港市 + map["0775"] = 4509 //玉林市 + map["0776"] = 4510 //百色市 + map["1774"] = 4511 //贺州市 + map["0778"] = 4512 //河池市 + map["1772"] = 4513 //来宾市 + map["1771"] = 4514 //崇左市 //海南 map["0898"] = 4601 //海口市 map["0899"] = 4602 //三亚市 -// map["2898"] = 4603 //三沙市 -// map["0805"] = 4604 //儋州市 + map["2898"] = 4603 //三沙市 + map["0805"] = 4604 //儋州市 //四川 -// map["0813"] = 5103 //自贡市 -// map["0812"] = 5104 //攀枝花市 -// map["0830"] = 5105 //泸州市 -// map["0838"] = 5106 //德阳市 -// map["0816"] = 5107 //绵阳市 -// map["0839"] = 5108 //广元市 -// map["0825"] = 5109 //遂宁市 -// map["1832"] = 5110 //内江市 -// map["0833"] = 5111 //乐山市 -// map["0817"] = 5113 //南充市 -// map["1833"] = 5114 //眉山市 + map["0813"] = 5103 //自贡市 + map["0812"] = 5104 //攀枝花市 + map["0830"] = 5105 //泸州市 + map["0838"] = 5106 //德阳市 + map["0816"] = 5107 //绵阳市 + map["0839"] = 5108 //广元市 + map["0825"] = 5109 //遂宁市 + map["1832"] = 5110 //内江市 + map["0833"] = 5111 //乐山市 + map["0817"] = 5113 //南充市 + map["1833"] = 5114 //眉山市 map["0831"] = 5115 //宜宾市 -// map["0826"] = 5116 //广安市 -// map["0818"] = 5117 //达州市 -// map["0835"] = 5118 //雅安市 -// map["0827"] = 5119 //巴中市 -// map["0832"] = 5120 //资阳市 -// map["0837"] = 5132 //阿坝藏族羌族自治州 -// map["0836"] = 5133 //甘孜藏族自治州 -// map["0834"] = 5134 //凉山彝族自治州 + map["0826"] = 5116 //广安市 + map["0818"] = 5117 //达州市 + map["0835"] = 5118 //雅安市 + map["0827"] = 5119 //巴中市 + map["0832"] = 5120 //资阳市 + map["0837"] = 5132 //阿坝藏族羌族自治州 + map["0836"] = 5133 //甘孜藏族自治州 + map["0834"] = 5134 //凉山彝族自治州 //贵州 map["0851"] = 5201 //贵阳市 -// map["0858"] = 5202 //六盘水市 -// map["0852"] = 5203 //遵义市 -// map["0853"] = 5204 //安顺市 -// map["0857"] = 5205 //毕节市 -// map["0856"] = 5206 //铜仁市 -// map["0859"] = 5223 //黔西南布依族苗族自治州 -// map["0855"] = 5226 //黔东南苗族侗族自治州 -// map["0854"] = 5227 //黔南布依族苗族自治州 + map["0858"] = 5202 //六盘水市 + map["0852"] = 5203 //遵义市 + map["0853"] = 5204 //安顺市 + map["0857"] = 5205 //毕节市 + map["0856"] = 5206 //铜仁市 + map["0859"] = 5223 //黔西南布依族苗族自治州 + map["0855"] = 5226 //黔东南苗族侗族自治州 + map["0854"] = 5227 //黔南布依族苗族自治州 //云南 -// map["0871"] = 5301 //昆明市 -// map["0874"] = 5303 //曲靖市 -// map["0877"] = 5304 //玉溪市 -// map["0875"] = 5305 //保山市 -// map["0870"] = 5306 //昭通市 -// map["0888"] = 5307 //丽江市 -// map["0879"] = 5308 //普洱市 -// map["0883"] = 5309 //临沧市 -// map["0878"] = 5323 //楚雄彝族自治州 -// map["0873"] = 5325 //红河哈尼族彝族自治州 -// map["0876"] = 5326 //文山壮族苗族自治州 -// map["0691"] = 5328 //西双版纳傣族自治州 + map["0871"] = 5301 //昆明市 + map["0874"] = 5303 //曲靖市 + map["0877"] = 5304 //玉溪市 + map["0875"] = 5305 //保山市 + map["0870"] = 5306 //昭通市 + map["0888"] = 5307 //丽江市 + map["0879"] = 5308 //普洱市 + map["0883"] = 5309 //临沧市 + map["0878"] = 5323 //楚雄彝族自治州 + map["0873"] = 5325 //红河哈尼族彝族自治州 + map["0876"] = 5326 //文山壮族苗族自治州 + map["0691"] = 5328 //西双版纳傣族自治州 map["0872"] = 5329 //大理白族自治州 -// map["0692"] = 5331 //德宏傣族景颇族自治州 -// map["0886"] = 5333 //怒江傈僳族自治州 -// map["0887"] = 5334 //迪庆藏族自治州 + map["0692"] = 5331 //德宏傣族景颇族自治州 + map["0886"] = 5333 //怒江傈僳族自治州 + map["0887"] = 5334 //迪庆藏族自治州 //陕西 -// map["0919"] = 6102 //铜川市 -// map["0917"] = 6103 //宝鸡市 -// map["0910"] = 6104 //咸阳市 -// map["0913"] = 6105 //渭南市 -// map["0911"] = 6106 //延安市 -// map["0916"] = 6107 //汉中市 -// map["0912"] = 6108 //榆林市 -// map["0915"] = 6109 //安康市 -// map["0914"] = 6110 //商洛市 + map["0919"] = 6102 //铜川市 + map["0917"] = 6103 //宝鸡市 + map["0910"] = 6104 //咸阳市 + map["0913"] = 6105 //渭南市 + map["0911"] = 6106 //延安市 + map["0916"] = 6107 //汉中市 + map["0912"] = 6108 //榆林市 + map["0915"] = 6109 //安康市 + map["0914"] = 6110 //商洛市 //甘肃 map["0931"] = 6201 //兰州市 -// map["1937"] = 6202 //嘉峪关市 -// map["0935"] = 6203 //金昌市 -// map["0943"] = 6204 //白银市 -// map["0938"] = 6205 //天水市 -// map["1935"] = 6206 //武威市 -// map["0936"] = 6207 //张掖市 -// map["0933"] = 6208 //平凉市 -// map["0937"] = 6209 //酒泉市 -// map["0934"] = 6210 //庆阳市 -// map["0932"] = 6211 //定西市 -// map["2935"] = 6212 //陇南市 -// map["0930"] = 6229 //临夏回族自治州 -// map["0941"] = 6230 //甘南藏族自治州 + map["1937"] = 6202 //嘉峪关市 + map["0935"] = 6203 //金昌市 + map["0943"] = 6204 //白银市 + map["0938"] = 6205 //天水市 + map["1935"] = 6206 //武威市 + map["0936"] = 6207 //张掖市 + map["0933"] = 6208 //平凉市 + map["0937"] = 6209 //酒泉市 + map["0934"] = 6210 //庆阳市 + map["0932"] = 6211 //定西市 + map["2935"] = 6212 //陇南市 + map["0930"] = 6229 //临夏回族自治州 + map["0941"] = 6230 //甘南藏族自治州 //青海 map["0971"] = 6301 //西宁市 map["0974"] = 6325 //海南藏族自治州 -// map["0972"] = 6302 //海东市 + map["0972"] = 6302 //海东市 //宁夏 map["0951"] = 6401 //银川市 -// map["0952"] = 6402 //石嘴山市 -// map["0953"] = 6403 //吴忠市 -// map["0954"] = 6404 //固原市 -// map["1953"] = 6405 //中卫市 + map["0952"] = 6402 //石嘴山市 + map["0953"] = 6403 //吴忠市 + map["0954"] = 6404 //固原市 + map["1953"] = 6405 //中卫市 //新疆 -// map["0991"] = 6501 //乌鲁木齐市 -// map["0990"] = 6502 //克拉玛依市 -// map["0995"] = 6504 //吐鲁番地区 -// map["0902"] = 6505 //哈密地区 + map["0991"] = 6501 //乌鲁木齐市 + map["0990"] = 6502 //克拉玛依市 + map["0995"] = 6504 //吐鲁番地区 + map["0902"] = 6505 //哈密地区 map }