Google地理编码和自动完成功能不会返回相同数量的结果

时间:2018-11-22 20:47:56

标签: google-maps google-maps-api-3 autocomplete google-places-api google-geocoder

对于用户在地址输入中输入的相同地址,前端(带有Javacript)的Google 自动完成API 返回单个结果,因此< strong>用户的唯一选择。 后端(PHP)上的 Geocoder API 返回两个不同的结果

我有一个后端验证,该验证通过自动完成功能来获取用户输入的地址,并使用地址解析器检查该地址。如果我使用地理编码器没有结果,或者没有一个以上的结果(这是我的情况,因为使用地理编码器有2个结果),我会抛出异常。

这对我来说是个问题,因为我对地址解析器的验证应该可以依靠自动填充功能。

请在下面找到我的额外解释

说明:

我在我的网站上有一个表格,用户在其中输入地址。此输入使用带有javascript的google自动完成API,如下所示。

var addressAutocompleteGoogleMaps = new google.maps.places.Autocomplete($myInputJqueryElement[0], {
    componentRestrictions: {country: 'fr'},
    types: ['geocode']
});

addressAutocompleteGoogleMaps.addListener('place_changed', function() {
    var addressAutocompleteSelectedAddress = $myInputJqueryElement.val();
    var autocompletionFormattedAddress = addressAutocompleteGoogleMaps.getPlace().formatted_address;
    $myInputJqueryElement.val(autocompletionFormattedAddress);

    // After having changed my form value to the formatted_address, I submit the form.
});

现在,如果用户输入以下地址

21bis Rue Claude Bernard, 75005 Paris, France

(如您所见,地址21bis之间缺少空格),在前端, google自动填充功能似乎可以识别该地址并为用户提供一个唯一的选择。如您所见:

enter image description here

如果我执行console.log(addressAutocompleteGoogleMaps.getPlace());,则可以在控制台中看到具有以下属性的单个结果:

place_id: "ChIJzX6RiOtx5kcRCaog3ti3QTs"
formatted_address: "21bis Rue Claude Bernard, 75005 Paris, France"
geometry: {location: _.P, viewport: _.Q}

但是在我的后端,我使用Google的地理编码器服务,并且不能容忍来自API的多个结果。

如果我使用与前端自动完成结果的formatted_address相同的地址21bis Rue Claude Bernard, 75005 Paris, France,并将其提交给后端的Geocoder API网址

https://maps.googleapis.com/maps/api/geocode/json?key=myKey&language=fr&region=fr&address=21bis+Rue+Claude+Bernard%2C+75005+Paris%2C+France 

(如您在URL参数中所见,21bis之间没有空格,因为我的用户根据Google Autocomplete的选择提交的地址也不包含空格)

我从地址解析器获得以下结果:

enter image description here

如您所见,使用地址解析器从地址21bis Rue Claude Bernard, 75005 Paris, France得到了两个结果。

但是我只能通过自动完成功能获得一个结果。

事件place_ids不相同。使用自动完成API,place_id为ChIJzX6RiOtx5kcRCaog3ti3QT。但是使用地理编码API,我可以得到另外两个place_id,分别是ChIJVeIPVu9x5kcRPHRX59oID5MChIJG9djYOxx5kcR1JtnnCReAxU

我会怎样

为什么Google Geocoder不能返回与Google自动完成相同的结果?我该如何解决我的问题?

我要

-我的自动填充功能返回与我的地址解析器相同的2个结果

-我的地理编码器返回一个结果,与“自动完成”相同

(ps:顺便说一句,我尝试在https://developers.google.com/maps/documentation/geocoding/intro上的Google在线地理编码器中输入相同的地址,而且我也得到了一个地址,如下所示。所以我的后端使用情况如何地理编码API仍会返回2个结果??

enter image description here

0 个答案:

没有答案