如何从中获取城市名称?

时间:2016-04-18 18:01:06

标签: javascript api geolocation location

我在html

中有这个
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
<title>Geolocation</title>
<script   src="https://code.jquery.com/jquery-2.2.3.min.js"   integrity="sha256-a23g1Nt4dtEYOj7bR+vTu7+T8VP13humZFBJNIYoEJo="   crossorigin="anonymous"></script>
<script src="funciones.js"></script>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script> 
</head>
<body>
<button id="startGeo">Click here to check your geolocation abilities</button>
</body>
</html>

我在function.js文件中有这个:

$(document).ready(function(){
$("#startGeo").click(checkLocation);

function checkLocation(){
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(getLocation,locationFailed);
        //document.write("you have geolocation");
    }
    else {
        document.write("you don't have geolocation");
    }
}//ends checkLocation()

function getLocation(position){
    var latitud = position.coords.latitude;
    var longitud = position.coords.longitude;
    var exactitud = position.coords.accuracy;

    alert("latitud: " + latitud + " longitud: " + longitud + " exactitud: " + exactitud);
    //document.write("we received your location");
}   
function locationFailed(){
    document.write("we didn't get your location. Please check your settings");
}
});
从这里我得到了坐标,但我根本不知道如何获得城市名称......或州名。我看到一个类似于这个回答的问题,但他们似乎正在使用json。我不想要地图,只需要信息,它可以是文本或警报。请问任何想法?

2 个答案:

答案 0 :(得分:0)

您可以使用反向地理编码API

示例电话:

http://maps.googleapis.com/maps/api/geocode/json?latlng=50.123413,-22.12345&sensor=true

你可以像这样替换你的getLocation函数(在访问data.results [2]之前进行适当的测试):

function getLocation(position){
    var latitud = position.coords.latitude;
    var longitud = position.coords.longitude;
    var exactitud = position.coords.accuracy;

    $.get('https://maps.googleapis.com/maps/api/geocode/json?latlng=' + latitud + ',' + longitud + '&sensor=true', function(data) {
        alert(data.results[2].address_components[0].long_name);
    });

    //alert("latitud: " + latitud + " longitud: " + longitud + " exactitud: " + exactitud);
    //document.write("we received your location");
}

您可以查看以下小提琴,了解它的实际效果:

https://jsfiddle.net/5tzxks10/

答案 1 :(得分:0)

+ Nowres Rafed我改变了你的代码:

function getLocation(position){
var latitud = position.coords.latitude;
var longitud = position.coords.longitude;
var exactitud = position.coords.accuracy;

$.get('https://maps.googleapis.com/maps/api/geocode/json?latlng=' + latitud + ',' + longitud, function(data) {
    alert(data.results[1].formatted_address);
});

//alert("latitud: " + latitud + " longitud: " + longitud + " exactitud: " + exactitud);
//document.write("we received your location");

它以这种方式提供更多信息。非常感谢。我想知道的(如果可能的话)是我在哪里可以阅读或知道如何获取特定答案,我读到当你得到结果时,它会返回多个结果。我改变了你提到的数字,测试了不同的选项。但是,有什么地方可以找到那些结果吗?请原谅我,我只是新手。