我正在创建一个脚本,使用Here Maps Geocoder Javascript API查找从英国邮政编码开始的位置。代码似乎工作正常,但在邮政编码 BT45 7PX 我收到了错误
TypeError:result.Response.View [0]未定义
我使用的代码如下:
var platform = 0;
var postcode = 0; /*random value*/
$(document).ready(function(){
platform = new H.service.Platform({
app_id: '(myapp_id)',
app_code: '(myapp_code)',
useCIT: true
});
document.getElementById('searchInput').value.toUpperCase();
postcode = contentRead.replace(/\s+/g, '');
geocode(postcode);
})
function geocode(postcode){
var geocoder = platform.getGeocodingService(),
geocodingParameters = {
searchText: postcode
};
geocoder.geocode(
geocodingParameters,
onSuccess,
onError
);
}
function onSuccess(result){
var location = result.Response.View[0].Result[0];
var city = location.Location.Address.City;
var lat = location.Location.DisplayPosition.Latitude;
var lng = location.Location.DisplayPosition.Longitude;
console.log('location: ');
console.log(location);
console.log('latitude: '+lat);
console.log('longitude: '+lng);
$('#rightResult').append('<div>The postcode searched points to... <strong>'+city+'</strong></div>');
}
function onError(error){
alert('Ooops, something went wrong, please try again!');
}
关于为什么代码无法正常使用 BT45 7PX 的任何线索?
尝试使用基本的JSON调用(http://geocoder.api.here.com/6.2/geocode.json?app_id=(myapp_id)&app_code=(myuapp_code)&searchtext=BT45%207PX)我发现如果我在两者之间留出空间,但是删除它,就像我在做的那样,它就不再有效了。其他邮政编码也不会发生这种情况。
答案 0 :(得分:0)
如果您发布API响应,我们将能够更好地帮助您,但鉴于您的编辑,看起来删除空间只会导致API无法返回结果。因此,您尝试访问一个根本不存在的数组索引。在您的代码中的某些时候,您可能希望处理这种情况,所以现在是一个很好的时机。发布回复(没有有效结果),我会帮你弄清楚用什么来确定是否找到了合适的结果。
答案 1 :(得分:0)
在处理响应时进行空检查总是好的,类似下面的内容应该可以正常工作
if(response && response.Response && response.Response.View[0] && response.Response.View[0].Result[0]) {
// Process Result
}
关于带空格的邮政编码,这似乎是英国邮政编码的问题。