谷歌地图、地理编码器、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不起作用。蜘蛛侠可以工作,但我无法实现,在我的代码中很难工作。