Javascript 基于谷歌未知地址的建议';地球编码器
使用谷歌地理编码服务在地图上显示城市时;填写不存在的城市会导致错误 有没有办法根据填写的城市显示一些建议Javascript 基于谷歌未知地址的建议';地球编码器,javascript,google-maps,geocoding,Javascript,Google Maps,Geocoding,使用谷歌地理编码服务在地图上显示城市时;填写不存在的城市会导致错误 有没有办法根据填写的城市显示一些建议 var geocoder = new GClientGeocoder(); function showAddress(address, zoom) { geocoder.getLatLng( address, function(point) { if (!point) {
var geocoder = new GClientGeocoder();
function showAddress(address, zoom) {
geocoder.getLatLng(
address,
function(point) {
if (!point) {
//no point found....
//Suggest some points :)
} else {
map.setCenter(point, zoom);
}
}
);
}
showAddress('Someplace, Nederland', 14);
如果找到匹配项,它将返回匹配项作为地址,这些是建议。它不应该返回错误,如果没有找到匹配项,它应该只返回一个空列表。你能发布代码吗?如果找到匹配项,它会将匹配项作为地址返回,这些是建议。它不应该返回错误,如果没有找到匹配项,它应该只返回一个空列表。你可以发布代码吗? 如果你只是地理编码城市,你可能想考虑开始建立自己的城市来协调缓存。 这是您可能需要考虑的一种方法:
- 提示用户输入城市名称
- 首先向服务器发出AJAX请求,检查缓存中是否存在该城市名称
- 如果是,继续JavaScript逻辑,就像从Google Geocoder获得坐标一样
- 如果您的缓存中没有城市名称,请向Google Geocoder发送请求,就像您当前正在做的那样
- 如果Google Geocoder返回肯定结果,则向服务器发出另一个AJAX请求,以便将该城市及其坐标存储在缓存中。你再也不会问谷歌这个城市的坐标了。然后在JavaScript应用程序中正常运行
- 如果Google Geocoder返回“未知地址”,则告诉用户未找到该城市名称,并建议使用更常见的城市名称重试。请记下尝试使用的原始城市名称。使用Google Geocoder测试第二次尝试,如果成功,将城市名称的两个同义词保存到缓存中(第一次尝试,第二次成功,如果尚未出现)李>
使用这种方法,你也可以缓存你的缓存,以解决你已经知道谷歌不能地理编码的城市名称。
< P>如果你只是地理编码城市,你可能会考虑开始建立自己的城市来协调Cache。 这是您可能需要考虑的一种方法:- 提示用户输入城市名称
- 首先向服务器发出AJAX请求,检查缓存中是否存在该城市名称
- 如果是,继续JavaScript逻辑,就像从Google Geocoder获得坐标一样
- 如果您的缓存中没有城市名称,请向Google Geocoder发送请求,就像您当前正在做的那样
- 如果Google Geocoder返回肯定结果,则向服务器发出另一个AJAX请求,以便将该城市及其坐标存储在缓存中。你再也不会问谷歌这个城市的坐标了。然后在JavaScript应用程序中正常运行
- 如果Google Geocoder返回“未知地址”,则告诉用户未找到该城市名称,并建议使用更常见的城市名称重试。请记下尝试使用的原始城市名称。使用Google Geocoder测试第二次尝试,如果成功,将城市名称的两个同义词保存到缓存中(第一次尝试,第二次成功,如果尚未出现)李>
通过这种方法,您还可以在缓存中设置种子,以这样的方式解析您已经知道Google无法进行地理编码的城市名称。建议将在结果的Placemarks属性中返回。我使用的是v3,这很有效,试着用address=“Washington Blvd”来称呼它
if(地理编码器){
geocoder.getLocations(
地址:,
职能(结果){
如果(!结果){
警报(地址+无建议);
}否则{
$('#output').html('');
if(results.Placemark){
对于(var i=0;i );
}
}
}
});
}
建议将在结果的Placemarks属性中返回。我使用的是v3,这很有效,试着用address=“Washington Blvd”来称呼它
if(地理编码器){
geocoder.getLocations(
地址:,
职能(结果){
如果(!结果){
警报(地址+无建议);
}否则{
$('#output').html('');
if(results.Placemark){
对于(var i=0;i );
}
}
}
});
}
一个好的、合理的方法。我要实施这个。但我怎么才能推荐其他城市呢?就像我在Endhoven上搜索一样,这是找不到的,它应该建议Eindhoven或Meerhoven等等。@richardverbruggen:用户第一次搜索Endhoven
,系统会要求他输入一个更普通的名字。用户输入Eindhoven
,谷歌就会找到它。您应该在缓存中同时存储指向同一lat/long的Endhoven
和Eindhoven
。然后,当用户下次搜索Endhoven
,你的缓存会立即返回结果,甚至不会点击谷歌。最终,缓存将包含每个城市的许多同义词。如果您的应用程序将本地化(即仅在荷兰),这将是最有效的。。。。。。它是w
if (geocoder) {
geocoder.getLocations(
address,
function (results) {
if (!results) {
alert(address + " no suggestions");
} else {
$('#output').html('');
if (results.Placemark) {
for (var i = 0; i < results.Placemark.length; i++) {
$('#output').append(i + ': ' + results.Placemark[i].address + '<br/>');
}
}
}
});
}