当前位置: 首页 > 知识库问答 >
问题:

如何从谷歌自动完成服务中获得全球国家、州和城市名称

巢海
2023-03-14

在我的html" target="_blank">前端(反应)需求之一,我需要获得全球国家名称,国家名称,城市名称,位置标识,纬度和经度,一旦一个地方从自动完成建议中被选中。我能够从响应的几何键中获得城市名称(从名称键)、地点ID、纬度和经度。我使用这个谷歌脚本使用的地方api服务=

 {"address_components":[{"long_name":"Bengaluru","short_name":"Bengaluru","types": 

[“地区”、“政治”],{“长名”:“班加罗尔市区”、“短名”:“班加罗尔市区”、“类型”:[“行政区”二级”、“政治”],{“长名”:“卡纳塔克邦”、“短名”:“卡”、“类型”:[“行政区”一级、“政治”],{“长名”:“印度”、“短名”:“IN”、“类型”:[“国家”、“政治”],“adr_地址”:“印度卡纳塔克邦班加鲁”,“格式化_地址”:“印度卡纳塔克邦班加鲁”,“几何体”:{“位置”:{“lat”:12.9715987,“lng”:77.5945627},“视口”:{“南”:12.7342888,“西”:77.3791981,“北”:13.173706,“东”:77.8826809},“图标”:https://maps.gstatic.com/mapfiles/place_api/icons/geocode-71.png“,“id:”0862832923832bfb1e46cbe843cdaa03a9ee8aa1“,”姓名:“,”班加罗尔“,”照片:“[{”高度:”:405,“html_属性”:[”https://maps.google.com/maps/contrib/113170619945048632846\"

=============================================================

I need guidance on how should I get Country name, State name, City name globally

共有1个答案

裴威
2023-03-14

我在谷歌上搜索了一些解决方案,最终找到了自己的解决方案,这对我来说很有效。它是解决方案代码的主要部分:

compIsType(t, s) { 
    for(let z = 0; z < t.length; ++z) 
       if(t[z] == s)
      return true;

    return false;
}

  handlePlaceChanged(){      
const place = this.autocomplete.getPlace();
//console.log(" from google auto complete place===>",place);
let lat, lng, addrSel, placeName, placeId =''; 
let country, state, city =null;  
if(place.geometry!==undefined ){
  const plcGeom = place.geometry;
  if(plcGeom.location!==undefined){
    lat = plcGeom.location ? plcGeom.location.lat():'';
    lng = plcGeom.location ? plcGeom.location.lng():'';
  }      
}   

addrSel  = place.formatted_address!==undefined?place.formatted_address:"";
placeName  = place.name!==undefined?place.name:"";
placeId = place.place_id!==undefined?place.place_id:"";

if(place.address_components!==undefined){
  let addrComp = place.address_components;
  for(let i = 0; i < addrComp.length; ++i)
  {
    var typ = addrComp[i].types;
    if(this.compIsType(typ, 'administrative_area_level_1'))
        state = addrComp[i].long_name; //store the state
    else if(this.compIsType(typ, 'locality'))
        city = addrComp[i].long_name; //store the city
    else if(this.compIsType(typ, 'country'))
      country = addrComp[i].long_name; //store the country        

    //we can break early if we find all three data
    if(state != null && city != null && country != null) break;
  }
  
  


}

let nameData = "";
  if(this.props.showKey!==undefined ){

    
    if(this.props.showKey=="CITY"){
      nameData = city;
    }
    else if(this.props.showKey=="STATE"){
      nameData = state;
    }
    else if(this.props.showKey=="COUNTRY"){
      nameData = country;
    }
     else if(this.props.showKey=="PLACE_NAME"){
      nameData = country;
    }
    else if(this.props.showKey=="FORMATTED_ADDRESS"){
      nameData = addrSel;
    }
     else if(this.props.showKey=="PLACE_ID"){
      nameData = placeId;
    }
    else{
      nameData = addrSel;
    }
   
  }else{
    
    nameData = addrSel;
  }

  

  if(this.props.removeTextFlag!==undefined && this.props.removeTextFlag=="YES" ){
    nameData = "";
  }

let stateResp = {
  'lat':lat,
  'lng': lng,
  'formattedAddress':addrSel, 
  'placeName': placeName,
  'placeId': placeId,
  'city':city,
  'state':state,
  'country':country,
  'textboxtext':nameData
};
this.setState(stateResp,()=>{
 this.props.selectedGoogleDataInfo!==undefined && this.props.selectedGoogleDataInfo(stateResp);    
});
//console.log(place);
//console.log("==lat==>", lat," ==lng===>",lng, "==addrSel==>",addrSel);
//this.props.onPlaceLoaded(place);
   }
 类似资料:
  • 我有一些关于谷歌地方api为Android的问题。 这是正在调用的请求: https://maps.googleapis.com/maps/api/place/autocomplete/json?sensor=false 问题是我只想要特定城市的地址。那有可能吗? 下面是来自GooglePlacesAPI autocomplete的一段引语,它表明它应该可以工作。 阻止引用(区域)类型集合指示Pl

  • 我已经在搜索上实现了谷歌地图API。我的代码工作正常,直到自动生成的位置,但我想要这样的设施,我可以得到准确的位置,只提供城市名称,而不是整个格式的字符串。 对于EX: 请检查此映像http://demo.ncryptedprojects.com/nct_bnb_clone_new/untitled.png 我正在输入城市名称孟买在搜索框和谷歌地图API检索所有值在下拉。当某人没有选择任何值从下拉

  • 有没有办法只显示谷歌地图api自动完成字段中的城市? 目前,我们正在使用地理代码,但不幸的是,我们甚至收到了国家和地址。 我们甚至尝试了以下代码 自动完成=新谷歌。地图。地方。自动完成(输入、选项); 我们收到的错误是 未捕获的TypeError:无法读取未定义的属性“Autocomplete” --谢谢你

  • 我有500000个纬度和经度坐标列表,如下所示: 我希望使用python在一个新列中获得每个坐标的城市、州和国家,如下所示: 有了这么大的数据集,如何在python中实现这一点?我听说过Google的API,Nominatim的API和Geopy包。 如何将所有行运行到此代码中?现在我必须手动输入经纬度到最后一行。 输出给我('Bowdon','North Dakota','USA')。我希望用我

  • 问题内容: 我有一个php页面,我想从国家,州和城市列表中选择一个位置。该页面包含用于用户注册的其他数据(名称,电子邮件等),因此在选择框刷新时,我不想刷新页面或其他任何内容。当前,每个选择框仅加载国家,州或城市的完整列表。我希望将它们链接起来,所以我没有重复的城市名称(不同州或国家/地区的名称相同)。 位置存储在数据库中,并在加载时传递到页面。然后将它们循环并添加到选择框中: 数据库结构非常简单

  • 问题内容: 有没有一种方法可以使用javascript的google maps API从纬度和经度点获取城市名称? 如果可以,请举个例子吗? 问题答案: 这称为 反向地理编码 Google提供的文件: http://code.google.com/apis/maps/documentation/geocoding/#ReverseGeocoding。 调用Google地理编码网络服务的示例: ht