gpt4 book ai didi

javascript - 使用地理定位无法找到完整地址

转载 作者:行者123 更新时间:2023-11-28 05:12:37 25 4
gpt4 key购买 nike

我有一段代码,其中我正在计算距当前位置的距离,当我输入地址直到区域时它工作正常,但是当我给出完整的地址(带有房屋编号)时,它无法找到地址。但是,当我仅通过区域和城市时,它工作正常,但我无法阻止最终用户仅提供区域和城市。这种情况该如何处理。

代码是否可以忽略房屋编号并仅使用区域或城市进行搜索?

<html>
<%@include file="configuration_parameter.jsp" %>
<%
try
{
// HttpSession session_1 = request.getSession(false);
// String address = request.getParameter("full_address");
String address="132/4a,Makdikhera,KALYANPUR , KANPUR, UTTAR PRADESH";
String rs_creation_date=request.getParameter("rs_creation_date");

//String address="asdfasdfasfasdfasdf";
%>
<body onLoad="getLocation()">

<p id="demo"><font face=calibri color=blue>Please wait.. Distance is being calculated from your current location..</font></p>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?key=<%=Google_API_Map_key%>&sensor=false"></script>
<script>

var x = document.getElementById("demo");

function getLocation() {

if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
}

function showPosition(position) {


var geocoder = new google.maps.Geocoder();
var address = "<%=address%>";

geocoder.geocode( { 'address': address}, function(results, status) {

if (status != google.maps.GeocoderStatus.OK) {
var xx = document.getElementById("demo");
xx.innerHTML = '<font face=calibri color=grey size=3>Posted by <%=rs_creation_date%> | </font><font face=calibri color=red size=3>Destination distance: Sorry, Unable to find out the destination distance.</font>';
}
if (status == google.maps.GeocoderStatus.OK) {

var latitude = results[0].geometry.location.lat();
var longitude = results[0].geometry.location.lng();
var R = 6371;
var dLat = (latitude-position.coords.latitude) * (Math.PI/180);
var dLon = (longitude-position.coords.longitude) * (Math.PI/180);
var a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos((position.coords.latitude) * (Math.PI/180)) * Math.cos((latitude) * (Math.PI/180)) * Math.sin(dLon/2) * Math.sin(dLon/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;

function displayLocation(latitude,longitude,distance,adr){
var request = new XMLHttpRequest();
var method = 'GET';
// var sourcelocation = "london";
var url = 'http://maps.googleapis.com/maps/api/geocode/json?latlng='+latitude+','+longitude;
var async = true;

request.open(method, url, async);
request.onreadystatechange = function(){
if(request.readyState == 4 && request.status == 200){
var data = JSON.parse(request.responseText);
var address = data.results[0];
var xx = document.getElementById("demo");
var time = distance/50;
xx.innerHTML = '<font face=calibri color=grey size=3>Posted by <%=rs_creation_date%> | </font> <font face=calibri color=green size=3>'+distance+' Km away from your current location</font>';

}

};
var retresults = "Source Location :"+address.formatted_address+" Destination Address:"+adr+" Distance:"+distance+" km";

request.send();
return retresults;

};

var adr = address;
var home = displayLocation(position.coords.latitude,position.coords.longitude,d.toFixed(2),adr);
}

}
);

}
</script>
<%
} catch (Exception e)
{
out.println("<font face=calibri color=red>Oops. There is some problem to find out the address details</font>");
}
%>
</body>
</html>

最佳答案

您的地址是一个字符串,因此您可以预处理您的地址以删除门牌号。

使用 map API(例如 Google Maps API)时,经常会遇到此类问题。 Google 不会验证地址,也不会尝试将其与真实地址数据库进行匹配。最终,大多数地址搜索词在解析搜索词中的字符后都会返回算法应有的内容。解析地址搜索项中的字符时,很可能会出现一些棘手的问题。对于 API 不太熟悉的某些国家/地区的地址尤其如此(例如,Google 可能最熟悉在北美和欧洲主要城市找到的地址类型)。

当您遇到某个地址无法在 Google API 上提供正确数据的问题时,您可以向 Google 报告错误。我听说他们修复得很快。您可以尝试this website用于报告。

顺便说一句,您可能想尝试地址验证 API,例如 SmartyStreets 。您可以在他们的 demo website 上尝试您的地址。对于棘手的地址,他们可能会得到更好的结果,特别是当您搜索邮寄或送货地址时。他们专门将地址搜索词与数据库中的地址(例如邮政数据)进行匹配。

公平披露:我在 SmartyStreets 工作。

关于javascript - 使用地理定位无法找到完整地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41232310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com