呼叫 AMapReGeocodeSearchRequest 後,回調 onReGeocodeSearchDone 返回的 response.regeocode.addressComponent 全為空值 (province、city 等皆為空字串)。
未成功獲取當前裝置的經緯度。程式碼中 regeoReq.location 依賴外部傳入的 latitude/longitude,若定位尚未完成或失敗,傳入 (0,0) 或無效座標,高德服務自然無法解析地址。
NSLocationWhenInUseUsageDescription / NSLocationAlwaysUsageDescription。CLLocationManager *locMgr = [[CLLocationManager alloc] init];
locMgr.delegate = self;
locMgr.desiredAccuracy = kCLLocationAccuracyHundredMeters;
[locMgr requestWhenInUseAuthorization];
[locMgr startUpdatingLocation];
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
CLLocation *loc = locations.lastObject;
if (loc.horizontalAccuracy < 0) return; // 無效
[self beginGeoCodeWithLatitude:loc.coordinate.latitude longitude:loc.coordinate.longitude];
[manager stopUpdatingLocation]; // 單次定位即停止
}
didFailWithError 記錄定位失敗原因 (權限拒絕、GPS 不可用等)。在逆地理編碼請求前,先 NSLog(@"lat=%f, lon=%f", lat, lon); 確認座標合理 (非 0,0),再呼叫高德 API。