Google Maps Javascript API: TypeError: response.data[0].geometry.location.lat is not a function
Google Maps Javascript API: TypeError: response.data[0].geometry.location.lat is not a function
我成功地从 Google 地图 Javascript Api 中得到了答案,并尝试访问 google.maps.GeocoderResult 的值以从 GeocoderGeometry 中提取纬度和经度/ 经纬度
我按照 TSD 定义实现了 response.data[0].geometry.location.lat(),这导致在 Chrome 中调试时出现错误:
TypeError: response.data[0].geometry.location.lat is not a function
查看调试器中的对象,有效地表明不支持任何方法 lat() 或 lng()。
我可以访问 response.data[0].geometry.location.lat 以在调试器中成功获取值,但是我的代码不再符合 Typescript。
我当然可以投出结果,但还是想了解原因。此外,也许有人得到了解决方案的解释和建议?
此致
作为记录,打字稿定义:
更新 chrome 调试信息:
response.data[0].geometry.location.lat() => <not available>
response.data[0].geometry.location.lat: 47.37793800000001
response.data[0].geometry.location: Object
lat: 47.37793800000001
lng: 8.5401898
response.data[0].geometry: Object
location:Object
lat:47.377
lng: 8.5401898
错误的堆栈跟踪:
TypeError: response.data[0].geometry.location.lat is not a function
at interestsParamsCtrl.js:61
at processQueue (ionic.bundle.js:29127)
at ionic.bundle.js:29143
at Scope.$eval (ionic.bundle.js:30395)
at Scope.$digest (ionic.bundle.js:30211)
at Scope.$apply (ionic.bundle.js:30503)
at done (ionic.bundle.js:24824)
at completeRequest (ionic.bundle.js:25022)
at XMLHttpRequest.requestLoaded (ionic.bundle.js:24963)
更新 2:查询 API 我执行 GET 并解析响应
search(searchLocationTerm:string):ng.IPromise<{}> {
var deferred = this.$q.defer();
this.$http.get(Resources.Constants.Default.GOOGLE.API.URL,
{
params: {
address: searchLocationTerm,
key: Resources.Constants.Default.GOOGLE.API.KEY
}
})
.success((response:Communication.IGeocoder) => {
deferred.resolve(response);
}).error((response:Communication.IGeocoder) => {
deferred.reject(response);
});
return deferred.promise;
};
IGeocoder 在哪里
export interface IGeocoder {
results:google.maps.GeocoderResult[];
status:google.maps.GeocoderStatus;
}
您正在通过 AJAX 发送 Web 服务请求。请注意,网络服务地理编码 API 的响应是文档中指定的 JSON 对象:
https://developers.google.com/maps/documentation/geocoding/intro?hl=en#GeocodingResponses
您应该使用客户端地理编码服务来获取符合 google.maps.d.ts
中定义的对象
看看这个example and client-side geocoder service documentation。
我成功地从 Google 地图 Javascript Api 中得到了答案,并尝试访问 google.maps.GeocoderResult 的值以从 GeocoderGeometry 中提取纬度和经度/ 经纬度
我按照 TSD 定义实现了 response.data[0].geometry.location.lat(),这导致在 Chrome 中调试时出现错误:
TypeError: response.data[0].geometry.location.lat is not a function
查看调试器中的对象,有效地表明不支持任何方法 lat() 或 lng()。
我可以访问 response.data[0].geometry.location.lat 以在调试器中成功获取值,但是我的代码不再符合 Typescript。
我当然可以投出结果,但还是想了解原因。此外,也许有人得到了解决方案的解释和建议?
此致
作为记录,打字稿定义:
更新 chrome 调试信息:
response.data[0].geometry.location.lat() => <not available>
response.data[0].geometry.location.lat: 47.37793800000001
response.data[0].geometry.location: Object
lat: 47.37793800000001
lng: 8.5401898
response.data[0].geometry: Object
location:Object
lat:47.377
lng: 8.5401898
错误的堆栈跟踪:
TypeError: response.data[0].geometry.location.lat is not a function
at interestsParamsCtrl.js:61
at processQueue (ionic.bundle.js:29127)
at ionic.bundle.js:29143
at Scope.$eval (ionic.bundle.js:30395)
at Scope.$digest (ionic.bundle.js:30211)
at Scope.$apply (ionic.bundle.js:30503)
at done (ionic.bundle.js:24824)
at completeRequest (ionic.bundle.js:25022)
at XMLHttpRequest.requestLoaded (ionic.bundle.js:24963)
更新 2:查询 API 我执行 GET 并解析响应
search(searchLocationTerm:string):ng.IPromise<{}> {
var deferred = this.$q.defer();
this.$http.get(Resources.Constants.Default.GOOGLE.API.URL,
{
params: {
address: searchLocationTerm,
key: Resources.Constants.Default.GOOGLE.API.KEY
}
})
.success((response:Communication.IGeocoder) => {
deferred.resolve(response);
}).error((response:Communication.IGeocoder) => {
deferred.reject(response);
});
return deferred.promise;
};
IGeocoder 在哪里
export interface IGeocoder {
results:google.maps.GeocoderResult[];
status:google.maps.GeocoderStatus;
}
您正在通过 AJAX 发送 Web 服务请求。请注意,网络服务地理编码 API 的响应是文档中指定的 JSON 对象:
https://developers.google.com/maps/documentation/geocoding/intro?hl=en#GeocodingResponses
您应该使用客户端地理编码服务来获取符合 google.maps.d.ts
中定义的对象看看这个example and client-side geocoder service documentation。