2013-07-01 65 views
1

我在做與地理編碼的頁面時,它的工作好地址,把盯防,但是總是來的地址地方的陣列,它不是在catalogated在谷歌地圖。不幸的是,地理編碼器,而不是什麼都不做,把沒有找到的地址的標記放在地圖的中心。谷歌地圖,地理編碼器,JavaScript的:在沒有找到在中心

有一些代碼可以讓地理編碼器不把這個未找到的標記?

(我是巴西人,我的英語很糟糕,對不起=))

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)); 
      } 
     }); 
    } 
} 
+1

您能否顯示您正在使用的添加標記到地圖的代碼? – mibbler

+0

這是填充標記的主要功能。我想要的是:當沒有找到地址時,不要放置標記。這是可能的? –

回答

0

你應該尋找Geocoding Results確定地理編碼如何工作。

幾何包含以下信息:

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 
} 
+0

Clusterer在這種情況下不起作用。 Spiderfier可以工作,但我無法實現,在我的代碼中很難工作。 –

0

RANGE_INTERPOLATED,顯然,解決我的問題:

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

謝謝,Erik。