首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Google address_component中检索address_component

如何从Google address_component中检索address_component
EN

Stack Overflow用户
提问于 2014-07-21 14:42:30
回答 1查看 774关注 0票数 0

我想从地址组件获得谷歌地图place_id,但我不确定是否可能。我目前有以下代码:

代码语言:javascript
复制
// Extract From Address Function
function extractFromAddress(components, type){
    for (var i=0; i<components.length; i++)
        for (var j=0; j<components[i].types.length; j++)
            if (components[i].types[j]==type) return components[i].long_name;
    return "";
}

// Variables
var varMap, varMapOptions, varMapDefaultLatLng, varInput, varAutocompleteOptions;
var varDefaultBounds, varAutocomplete, varMarker, varPlace, varInfoWindow, varInfoWindowContent;
var varPlaceID, varPlaceTitle, varPlaceACSZ;
var varInputText, varInputLength;

// Map Listener
google.maps.event.addListener(varAutocomplete, "place_changed", function() {
    // Set Map
    varInfoWindow.close();
    varMarker.setVisible(false);                        
    // Autocomplete
    varPlace = varAutocomplete.getPlace();

    // Check for geometry
    if (!varPlace.geometry) {
      return;
    }

    // If the place has a geometry, then present it on a map.
    if (varPlace.geometry.viewport) {
        varMap.fitBounds(varPlace.geometry.viewport);
    } else {
        varMap.setCenter(varPlace.geometry.location);
        varMap.setZoom(17);  // Why 17? Because it looks good.
    }

    // Set Marker Icon
    google.maps.event.addListener(varMap, "click", function(event) {
        varMarker.setPosition(event.latLng);
    });

    // Marker Position
    varMarker.setPosition(varPlace.geometry.location);
    varMarker.setVisible(true);

    // Obtain Address Components
    if (varPlace.address_components) {
        var varPlaceID = extractFromAddress(varPlace.address_components, "place_id");  // Currently doesn't return a value
        var varStreetNumbers = extractFromAddress(varPlace.address_components, "street_number");
        var varStreetName = extractFromAddress(varPlace.address_components, "route");
        var varCity = extractFromAddress(varPlace.address_components, "locality");
        var varState = extractFromAddress(varPlace.address_components, "administrative_area_level_1");
        var varPostCode = extractFromAddress(varPlace.address_components, "postal_code");
    }

    // Assign Address Components
    varGooglePlaceID = varPlaceID;
    varPlaceTitle = varPlace.name;
    varPlaceAddress = varStreetNumbers + ' ' + varStreetName;
    varPlaceACSZ = varPlaceAddress + '<br>' + varCity + ', ' + varState + ' ' + varPostCode;
    varPlaceLatitude = varPlace.geometry.location.lat();
    varPlaceLongitude = varPlace.geometry.location.lng();

这将产生除varPlaceID变量之外的所有值。我不确定是否可以从place_id或以其他方式获得address_components

谢谢你的帮助。:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-21 15:22:03

演示试试这个,

代码语言:javascript
复制
 var varPlaceID = varPlace.place_id;

检查您的street_number路径varPlace.address_components street_number

代码语言:javascript
复制
   "result" : { 
     "address_components" : [
     {
        "long_name" : "48",
        "short_name" : "48",
        "types" : [ "street_number" ]
     } // I deleted Other
  ], 
  "place_id" : "ChIJN1t_tDeuEmsRUsoyG83frY4"

就像这样打电话给varPlace.place_id

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24867956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档