2011-02-08 86 views
0

我正在嘗試使用谷歌地理編碼服務與地形圖。這個工作沒有問題......應該不是嗎? 我正在使用的代碼就像上谷歌的地理編碼例如API文檔:openlayers和谷歌地理編碼器

function geoCode(){ 
    var adresse = $("observation_location_text").getValue(); 
    var geoCoder = new google.maps.Geocoder(); 
    alert(adresse); 
    geoCoder.geocode({ 'address': address}, function(results, status) {                                         
    if (status == google.maps.GeocoderStatus.OK) { 
     map.setCenter(results[0].geometry.location); 
     marker.moveTo(results[0].geometry.location); 
     marker.display(true); 
    } else { 
     alert("Geocode was not successful for the following reason: " + status); 
    } 
    }); } 

由於某種原因,我不明白的地理編碼對象。地址警報從不執行。

期待一些提示 月

+0

哦BTW地圖和標記變量來自openlayers,因此可能無法使用。創建新的Geocoder對象的調用不會返回。 – Jan 2011-02-08 09:23:44

+0

您需要知道,谷歌地理編碼器的服務條款不幸地規定您使用座標映射到谷歌地圖上。 「注意:地理編碼API只能與Google地圖一起使用,禁止在地圖上顯示地理編碼結果,有關允許使用的完整詳細信息,請參閱Maps API服務條款許可限制。 – 2012-04-17 17:37:53

回答

3

嘗試刪除的OpenLayers任何依賴,看看它是否工作。您應該可以使用普通的Google Maps API創建地理編碼器對象。

關於我注意到的一件小事,是您將輸入值讀入名爲「adresse」的變量,但傳遞給geocoder變量調用的「地址」。如果它只是一個錯字,而第二個變量沒有被聲明,那麼你會得到腳本錯誤並停止執行代碼。可能這就是爲什麼您從未創建過geocoder對象的原因。

1

閱讀關於第一個答案的評論 - 您確定Google Maps文件在您運行「new google.maps.Geocoder()」時已加載嗎?

你說代碼在加載時被調用,你用什麼方式做?由於您使用jQuery,因此應該在$(document).ready()中完成。

0

我正在嘗試做與你完全相同的事情。這裏是我的問題,它可能會幫助你link

此外,如果您嘗試在openlayers圖層上傳遞地理編碼點,請注意openlayers矢量圖層上的點類似於(lon,lat),但點來自Google地理編碼就像(lat,lon)。 (Googles page

但是我認爲問題在於「我的文檔」中包含「谷歌地理編碼不幸的是體現在你使用的座標映射到一個谷歌地圖「,厄爾尼諾Duderino說...

哦,還有,如果你使用Drupal,檢查this了...