2014-09-10 11 views
0

我很新的這一點,並想知道如何獲得完整的字符串,而不是第一個字符,因爲它是目前正在做,谷歌的地理編碼地址擊穿

當前正在使用的HTML + JS從https://developers.google.com/maps/documentation/javascript/examples/geocoding-reverse的例子

function codeLatLng(callback) { 
    var input = document.getElementById('latlng').value; 
    var latlngStr = input.split(',', 2); 
    var lat = parseFloat(latlngStr[0]); 
    var lng = parseFloat(latlngStr[1]); 
    var latlng = new google.maps.LatLng(lat, lng); 



    geocoder.geocode({'latLng': latlng}, function(results, status) { 
    if (status == google.maps.GeocoderStatus.OK) { 

     if (results[1]) { 
     map.setZoom(17); 
     marker = new google.maps.Marker({ 
      position: latlng, 
      map: map 



     }); 
     infowindow.setContent(results[0].formatted_address); 
     infowindow.open(map, marker); 
    document.getElementById('Addressb').value= results[0].formatted_address; //working 
    document.getElementById('Strn').value = results[0].formatted_address[0]; 
    document.getElementById('Strna').value = results[0].formatted_address[2]; 




     } else { 
     alert('No results found'); 
    } 
    } else { 
     alert('Geocoder failed due to: ' + status); 
    } 
    }); 

} 



google.maps.event.addDomListener(window, 'load', initialize); 



    </script> 

結果需要得到存儲在指定的文本字段爲波紋管

Street Number: <input id="Strn" type="text"><br> 
    Street Name: <input id="Strna" type="text"><br> 
    Suburb: <input id="Subu" type="text"><br> 
    Town: <input id="Town" type="text"><br> 
    Code: <input id="Code1" type="text"><br> 

回答

1

你必須通過地址組件,然後類型進行迭代,這裏是代碼

var streetNumber; 
    var streetName; 
    var city; 
    var state; 
    var zip; 
    var country; 
    for(var i = 0; i < results[0].address_components.length; i++){ 
    for(var k = 0; k < results[0].address_components[i].types.length; k++){ 
     if (results[0].address_components[i].types[k] == "street_number") 
      streetNumber = results[0].address_components[i].long_name; 
     else if (results[0].address_components[i].types[k] == "route") 
      streetName = results[0].address_components[i].short_name; 
     else if (results[0].address_components[i].types[k] == "locality") 
      city = results[0].address_components[i].long_name; 
     else if (results[0].address_components[i].types[k] == "administrative_area_level_1") 
      state = results[0].address_components[i].long_name; 
     else if (results[0].address_components[i].types[k] == "postal_code") 
      zip = results[0].address_components[i].long_name; 
     else if (results[0].address_components[i].types[k] == "country") 
      country = results[0].address_components[i].long_name; 
    } 
    } 
+0

非常感謝你,代碼飛馳的工作,現在我可以專注於造型和站點 – 2014-09-11 11:21:59

+0

其餘太好了,我很高興它是適合你的,你能否把這個問題標記爲答案?謝謝 – 2014-09-11 21:32:27

0

Here's a link谷歌地圖Geocodi ng文檔,指定響應的格式。

它看起來好像按照特定順序分別返回address_components數組中的地址組件。因此,如果您要對街道地址進行地理編碼,則address_components[0].long_name應返回街道地址,address_components[1].long_name街道名稱等。

希望有所幫助。