谷歌地图、地理编码器、javascript:当找不到地址时,将标记放在中间
我正在用地理编码做一个页面,它工作得很好,但总是出现在谷歌地图中没有编目的地址数组中。不幸的是,地理编码器并没有什么都不做,而是将未找到地址的标记放在地图的中心 有一些代码可以让地理编码器不放这个找不到的标记 我是巴西人,我的英语很差,对不起=谷歌地图、地理编码器、javascript:当找不到地址时,将标记放在中间,javascript,google-maps,Javascript,Google Maps,我正在用地理编码做一个页面,它工作得很好,但总是出现在谷歌地图中没有编目的地址数组中。不幸的是,地理编码器并没有什么都不做,而是将未找到地址的标记放在地图的中心 有一些代码可以让地理编码器不放这个找不到的标记 我是巴西人,我的英语很差,对不起= function addMarker(position) { var geocoder; geocoder = new google.maps.Geocoder(); geocode
function addMarker(position) {
var geocoder;
geocoder = new google.maps.Geocoder();
geocoder.geocode({'address': address[position]}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
places[position] = results[0].geometry.location;
var marker = new google.maps.Marker({
position: places[position],
map: mapa,
icon: icone,
title: ('OS: ' + arOS[position] + ' - ' + arEndereco[position]),
url: 'OSDETALHES.asp?txtCodigoOS=' + arOS[position]
});
google.maps.event.addListener(marker, 'click', function() {
window.open(this.url, '_blank');
});
}
else
{
if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT)
{
setTimeout(function() { addMarker(position); }, (timeout * 3));
}
}
address_position++;
if (address_position < address.length)
{
setTimeout(function() { addMarker(address_position); }, (timeout));
}
});
}
}
您应该查看以确定地理编码的工作情况
几何图形包含以下信息:
位置类型存储有关指定位置的附加数据。当前支持以下值:
google.maps.GeocoderLocationType.roottop表示返回的结果反映了精确的地理代码。
google.maps.GeocoderLocationType.RANGE_INTERPOLATED表示返回的结果反映了通常在两个精确点(如交叉点)之间插值的道路上的近似值。当街道地址的屋顶地理代码不可用时,通常会返回插值结果。
google.maps.GeocoderLocationType.GEOMETRIC_CENTER表示返回的结果是结果的几何中心,例如多段线,例如街道或多边形区域。
google.maps.GeocoderLocationType.Approval表示返回的结果是近似值。
根据评论更新
我没有使用过这个,但是非常接近这个的东西应该会起作用:
if (results[0].geometry.location.location_type != 'ROOFTOP')
{
// not an exact match
}
显然,范围插值解决了我的问题:
if (results[0].geometry.location_type == google.maps.GeocoderLocationType.RANGE_INTERPOLATED){
谢谢你,Erik。你能展示一下你用来在地图上添加标记的代码吗?这是填充标记的主要功能。我想要的是:当你找不到地址时,不要放记号笔。有可能吗?在这种情况下,Clusterer不起作用。蜘蛛侠可以工作,但我无法实现,在我的代码中很难工作。