【问题标题】:google geocoding address breakdown谷歌地理编码地址细分
【发布时间】:2014-09-11 04:53:15
【问题描述】:

我对此很陌生,想知道如何获取完整的字符串,而不是像目前那样获取第一个字符,

目前使用https://developers.google.com/maps/documentation/javascript/examples/geocoding-reverse的html+js的例子

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>

【问题讨论】:

    标签: javascript html geocoding


    【解决方案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;
        }
      }
    

    【讨论】:

    • 非常感谢,代码运行良好,现在我可以专注于样式和网站的其余部分
    • 太好了,我很高兴它对你有用,你能把这个问题标记为已回答吗?谢谢
    【解决方案2】:

    Here's a link Google 地图地理编码文档,指定响应的格式。

    看起来它确实以特定顺序在address_components 数组中分别返回了地址的组成部分。因此,如果您要对街道地址进行地理编码,address_components[0].long_name 应该返回街道地址、address_components[1].long_name 街道名称等。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-17
      • 1970-01-01
      • 2013-09-28
      • 2020-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多