这个问题可能看起来很熟悉:我有一个地方的经度和纬度。我需要得到国家的名字。我知道我必须为此使用reverse geo coding。但我的问题是,有时候它会返回该地区或国家的简称(例如美国为美国或加利福尼亚州为CA)。有没有什么办法可以让我得到这个国家的全称?我无法通过这个简短的表格与预存的国家数据库进行匹配操作。经纬度的国家名称
Q
经纬度的国家名称
2
A
回答
5
地理编码器响应通常返回几个results
,其中包括街道拐角,交叉点,县和其他替代表示名称。我发现results[0]
是最好的描述。
诀窍是在结果中搜索“国家”。然后可以检索long_name。
function getCountry(latLng) {
geocoder.geocode({'latLng': latLng},
function(results, status) {
if(status == google.maps.GeocoderStatus.OK) {
if(results[0]) {
for(var i = 0; i < results[0].address_components.length; i++) {
if(results[0].address_components[i].types[0] == "country") {
alert(results[0].address_components[i].long_name);
}
}
}
else {
alert("No results");
}
}
else {
alert("Status: " + status);
}
}
);
}
2
0
这里是一个JSON/XML解析器,无论对于谷歌街道地图和开放街道地图作品。
(唯一的问题是,它需要一个JSON或XML对象作为“回应”,其对第3版谷歌和0.6开放街道地图测试,它的工作好)
注意:它返回一个对象的位置。 lat或location.lon,你也可以让它返回你想要的任何其他字段。
JSON.parse(文本)//其中文本是从谷歌或开街的答复映射 XML.parse(文本)//你可以让自己的回复转换为XML或使用正则表达式来解析它。如果有人有正则表达式版本来解析文本回复,这也可能有帮助。
// Parser(ajax reply object, google/open, json/xml);
// takes the reply from google maps or open street maps and creates an object with location[lat/lon]
function Parser(reply, provider, type) {
var location = {};
if(reply != null) {
if(provider == "google") { // Google Street Maps
switch(type) {
case "xml":
location["lat"] = reply.getElementsByTagName("lat")[0].textContent;
location["lon"] = reply.getElementsByTagName("lng")[0].textContent;
break;
default: // json
location["lat"] = reply.results[0].geometry.location.lat;
location["lon"] = reply.results[0].geometry.location.lng;
}
}
else { // Open Street Maps
switch(type) {
case "xml":
location["lat"] = reply.getElementsByTagName("place")[0].getAttribute("lat");
location["lon"] = reply.getElementsByTagName("place")[0].getAttribute("lon");
break;
default: // json
location["lat"] = reply[0].lat;
location["lon"] = reply[0].lon;
}
}
}
return location;
}
0
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (position) {
$.post("https://maps.googleapis.com/maps/api/geocode/json?latlng=" + position.coords.latitude + "," + position.coords.longitude + "&sensor=false", function (result) {
for (var i = 0; i < result['results'][0]['address_components'].length; i++) {
if (result['results'][0]['address_components'][i]['types'][0] == "country") {
alert(result['results'][0]['address_components'][i]['long_name']);
}
}
});
});
}
}
getLocation();
相关问题
- 1. JavaScript:从经度和纬度获取国家名称
- 2. 经历一个国家的经纬度
- 3. 如何检索国家名称等信息,只要+经纬度
- 4. 从经纬度得到国家,地区和城市名称(PHP)
- 5. 从经纬度获取国家名称 - 无谷歌
- 6. 如何使用经度和纬度的Android得2字符国家名称?
- 7. 国家平面坐标到经纬度
- 8. 获取纬度/经度坐标当我有国家名称/ ISO与Android
- 9. 英国国家网格Shapefile - 转换为WGS84纬度/经度
- 10. Mysql的转储印度国家纬度,经度和AREANAME
- 11. 检索自改名后的城市/国家的纬度/经度坐标?
- 12. 使用经度/纬度在国家地图上标记位置
- 13. IP到国家,城市,纬度,经度javascript服务
- 14. 通过凝固位置确定国家(经度和纬度)
- 15. 国家如何定义其经度和纬度
- 16. DBpedia,获取具有经纬度的网站的国家/地区
- 17. 转换国家代码国家名称
- 18. 从城市名称获取经纬度
- 19. 从经纬度获取城市名称
- 20. 从经度获取国家
- 21. iPhone Mapkit:如何从经度/纬度获取真实的商家名称/地址?
- 22. 从经纬度获取城市,州,国家
- 23. 将国家映射到经纬度信息
- 24. 如何使用geoplugin获取所有纬度和经度的国家代码?
- 25. 如何从纬度和经度获取3位国家代码的Android
- 26. 国家名称模式
- 27. 获取国家名称android
- 28. 获取经纬度为美国
- 29. 获取基于给定名称的经度和纬度的API
- 30. 使用纬度和经度的位置名称的Web服务
非常感谢主席先生。我只有一天的时间。您的回答节省了大量的时间 – arjuncc
嗨,我试图使用您的代码获取街道名称。我用“street_address”替换了“country”类型,但似乎不起作用。有没有机会可以帮助我呢?谢谢! – inadcod
找到了。我只需用“路线”替换“国家”:) – inadcod