1

我正在做一个带有地理编码的页面,它运行良好,但总是出现在谷歌地图中未分类的地址数组中。不幸的是,地理编码器并没有什么都不做,而是将未找到地址的标记放在地图的中心。

有一些代码可以使地理编码器不放置这个未找到的标记?

(我是巴西人,我的英语很糟糕,抱歉=))

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));
            }
        });
    }
}
4

2 回答 2

0

您应该查看地理编码结果以确定地理编码的工作情况。

几何包含以下信息:

location_type存储有关指定位置的附加数据。当前支持以下值:

  • google.maps.GeocoderLocationType.ROOFTOP表示返回的结果反映了精确的地理编码。
  • google.maps.GeocoderLocationType.RANGE_INTERPOLATED表示返回的结果反映了在两个精确点(例如交叉口)之间插值的近似值(通常在道路上)。当街道地址的屋顶地理编码不可用时,通常会返回插值结果。
  • google.maps.GeocoderLocationType.GEOMETRIC_CENTER表示返回的结果是折线(例如街道)或多边形(区域)等结果的几何中心。
  • google.maps.GeocoderLocationType.APPROXIMATE表示返回的结果是近似的。

根据评论更新

我没有使用过这个,但是非常接近这个的东西应该可以工作:

if (results[0].geometry.location.location_type != 'ROOFTOP')
{
  // not an exact match
}
于 2013-07-01T20:25:01.620 回答
0

RANGE_INTERPOLATED 显然解决了我的问题:

if (results[0].geometry.location_type == google.maps.GeocoderLocationType.RANGE_INTERPOLATED){

谢谢,埃里克。

于 2013-07-03T20:49:45.783 回答