diff --git a/platformapi/autonavi/autonavi.go b/platformapi/autonavi/autonavi.go index a8e76c8c..f21284de 100644 --- a/platformapi/autonavi/autonavi.go +++ b/platformapi/autonavi/autonavi.go @@ -145,3 +145,18 @@ func (a *API) CoordinateConvert(lng, lat float64, coordsys string) (retLng, retL } return lng, lat, err } + +func (a *API) GetCoordinateDistrictCode(lng, lat float64) (districtCode int) { + params := map[string]interface{}{ + "location": fmt.Sprintf("%.6f,%.6f", lng, lat), + } + result, err := a.AccessAPI("geocode/regeo", params) + // baseapi.SugarLogger.Debug(utils.Format4Output(result, false)) + if err == nil { + addressComponent := result["regeocode"].(map[string]interface{})["addressComponent"].(map[string]interface{}) + if strAdcode, ok := addressComponent["adcode"].(string); ok { + districtCode = int(utils.Str2Int64WithDefault(strAdcode, 0)) + } + } + return districtCode +} diff --git a/platformapi/autonavi/autonavi_test.go b/platformapi/autonavi/autonavi_test.go index fa6fab8d..cae4d9c5 100644 --- a/platformapi/autonavi/autonavi_test.go +++ b/platformapi/autonavi/autonavi_test.go @@ -35,3 +35,19 @@ func TestCoordinateConvert(t *testing.T) { } } } + +func TestGetCoordinateCodes(t *testing.T) { + // districtCode := autonaviAPI.GetCoordinateDistrictCode(119.40695, 32.38755) + districtCode := autonaviAPI.GetCoordinateDistrictCode(104.053567, 30.576072) + if districtCode != 510107 { + t.Fatalf("TestGetCoordinateCodes failed") + } else { + t.Log(districtCode) + } + districtCode = autonaviAPI.GetCoordinateDistrictCode(0, 0) + if districtCode != 0 { + t.Fatalf("TestGetCoordinateCodes failed") + } else { + t.Log(districtCode) + } +}