这里映射Geocoder Javascript API - 邮政编码问题

时间:2015-04-10 15:51:46

标签: javascript geocode here-api

我正在创建一个脚本,使用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)我发现如果我在两者之间留出空间,但是删除它,就像我在做的那样,它就不再有效了。其他邮政编码也不会发生这种情况。

2 个答案:

答案 0 :(得分:0)

如果您发布API响应,我们将能够更好地帮助您,但鉴于您的编辑,看起来删除空间只会导致API无法返回结果。因此,您尝试访问一个根本不存在的数组索引。在您的代码中的某些时候,您可能希望处理这种情况,所以现在是一个很好的时机。发布回复(没有有效结果),我会帮你弄清楚用什么来确定是否找到了合适的结果。

答案 1 :(得分:0)

在处理响应时进行空检查总是好的,类似下面的内容应该可以正常工作

if(response && response.Response && response.Response.View[0] && response.Response.View[0].Result[0]) {
    // Process Result
}

关于带空格的邮政编码,这似乎是英国邮政编码的问题。