2012-08-10 156 views
0

我試圖地理編碼使用Javascript從Microsoft Dynamics CRM 2011的地址。 我不想顯示地圖,只需執行地理編碼並將緯度/長度值存儲在數據庫中。 我不斷收到錯誤消息說地理編碼使用谷歌地理編碼網路服務

「result.0爲空或不是對象」

var url = 'http://maps.googleapis.com/maps/api/geocode/json?address=39 George Street, Belmont, WA, 6104, Australia&sensor=false' 

var lat = url.results[0].geometry.location.lat(); 

alert(lat) 

我究竟做錯了什麼?

回答

2

我從你的問題假設這是一個完整的代碼片段。在這個假設下你的代碼是不完整的。您的代碼會創建一個名爲url的字符串。然後,您嘗試訪問該字符串中的一個集合,名爲results(該字段不存在 - 因此在該集合中的位置0不存在)。基本上,你的代碼不會做任何事情。

你需要有谷歌的地理編碼API的一個很好看的,因爲我很抱歉地說,你甚至還沒有接近得到這個工作... https://developers.google.com/maps/documentation/javascript/geocoding

編輯: 在利益更加有益的 - 這裏的演練過:http://www.wikihow.com/Geocode-an-Address-in-Google-Maps-Javascript

1

我與格雷格不同意......你似乎有請求URL八九不離十。請查看Google Geocoding guide瞭解詳情。你會得到的是一個JSON字符串,所以你應該使用類似jQuery to parse the string into an object

如果不使用JSON設置,那麼像這樣一個簡單的腳本也會返回緯度/液化天然氣(改編自Google sample):

<script src="https://maps.googleapis.com/maps/api/js?sensor=false"></script> 
<script> 
    var geocoder; 

    function initialize() { 
    geocoder = new google.maps.Geocoder(); 
    } 

    function codeAddress() { 
    var address = document.getElementById("address").value; 
    geocoder.geocode({ 'address': address}, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
     var addressLocation = results[0].geometry.location; 
     alert("Lat: " + addressLocation.lat() + " Lon: " + addressLocation.lng()); 
     } else { 
     alert("Geocode was not successful for the following reason: " + status); 
     } 
    }); 
    } 

</script> 
+1

+1花費更多的時間在你的答案比我;) – 2012-08-10 16:01:05

+0

...謝謝你,當我重新讀你的答案時,我意識到問題中的代碼真的很不起作用。 – 2012-08-10 17:48:55

+0

我不確定你們是否瞭解我的問題。我需要使用JavaScript來我的地理編碼地址作爲我試圖從Microsoft Dynamics CRM 2011的自定義功能區按鈕做到這一點。因此,我得到一個「沒有定義谷歌」的錯誤,如果我嘗試使用上面的代碼。如何從JavaScript加載地理編碼Web服務並獲取結果以將經緯度存儲在我的數據庫中?我無法爲此使用html頁面。 – user1544985 2012-08-12 23:37:38