回答
这就是所谓的反向地理编码从谷歌
太棒了!我对此进行了阅读,现在又有太多的疑问;)谢谢。 –
如果您使用JavaScript API,则每个IP地址和每个用户都是相同的,但如果您使用的是PHP,并且您认为达到了这些限制,则需要将请求限制为每秒1次,或者使用代理服务器,但要小心代理,谷歌不愚蠢,你不能锤击它们。更多信息请访问:https://developers.google.com/maps/documentation/business/articles/usage_limits –
@Azer http://www.microsoft.com/maps/choose-your-bing-maps-API.aspx – smartcaveman
下面是一个完整的示例:
<!DOCTYPE html>
<html>
<head>
<title>Geolocation API with Google Maps API</title>
<meta charset="UTF-8" />
</head>
<body>
<script>
function displayLocation(latitude,longitude){
var request = new XMLHttpRequest();
var method = 'GET';
var url = 'http://maps.googleapis.com/maps/api/geocode/json?latlng='+latitude+','+longitude+'&sensor=true';
var async = true;
request.open(method, url, async);
request.onreadystatechange = function(){
if(request.readyState == 4 && request.status == 200){
var data = JSON.parse(request.responseText);
var address = data.results[0];
document.write(address.formatted_address);
}
};
request.send();
};
var successCallback = function(position){
var x = position.coords.latitude;
var y = position.coords.longitude;
displayLocation(x,y);
};
var errorCallback = function(error){
var errorMessage = 'Unknown error';
switch(error.code) {
case 1:
errorMessage = 'Permission denied';
break;
case 2:
errorMessage = 'Position unavailable';
break;
case 3:
errorMessage = 'Timeout';
break;
}
document.write(errorMessage);
};
var options = {
enableHighAccuracy: true,
timeout: 1000,
maximumAge: 0
};
navigator.geolocation.getCurrentPosition(successCallback,errorCallback,options);
</script>
</body>
</html>
没有用户认可,有什么方法可以从纬度和经度中找出用户位置? –
@VikasVerma如果你被允许在未经他们同意的情况下找到用户位置,那么这将是一个严重的隐私违规 – omerio
@omerio谢谢,但我在那里做了代码,我强迫用户点击允许,如果他/她想继续。 –
下面是使用一个承诺一个现代化的解决方案:
function getAddress (latitude, longitude) {
return new Promise(function (resolve, reject) {
var request = new XMLHttpRequest();
var method = 'GET';
var url = 'http://maps.googleapis.com/maps/api/geocode/json?latlng=' + latitude + ',' + longitude + '&sensor=true';
var async = true;
request.open(method, url, async);
request.onreadystatechange = function() {
if (request.readyState == 4) {
if (request.status == 200) {
var data = JSON.parse(request.responseText);
var address = data.results[0];
resolve(address);
}
else {
reject(request.status);
}
}
};
request.send();
});
};
,并调用它是这样的:
getAddress(lat, lon).then(console.log).catch(console.error);
的承诺返回地址对象“那么”或“抓”
错误状态码下面的代码工作正常,获取城市名称(使用谷歌地图API地理):
HTML
<p><button onclick="getLocation()">Get My Location</button></p>
<p id="demo"></p>
<script src="http://maps.google.com/maps/api/js?key=YOUR_API_KEY"></script>
SCRIPT
var x=document.getElementById("demo");
function getLocation(){
if (navigator.geolocation){
navigator.geolocation.getCurrentPosition(showPosition,showError);
}
else{
x.innerHTML="Geolocation is not supported by this browser.";
}
}
function showPosition(position){
lat=position.coords.latitude;
lon=position.coords.longitude;
displayLocation(lat,lon);
}
function showError(error){
switch(error.code){
case error.PERMISSION_DENIED:
x.innerHTML="User denied the request for Geolocation."
break;
case error.POSITION_UNAVAILABLE:
x.innerHTML="Location information is unavailable."
break;
case error.TIMEOUT:
x.innerHTML="The request to get user location timed out."
break;
case error.UNKNOWN_ERROR:
x.innerHTML="An unknown error occurred."
break;
}
}
function displayLocation(latitude,longitude){
var geocoder;
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(latitude, longitude);
geocoder.geocode(
{'latLng': latlng},
function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[0]) {
var add= results[0].formatted_address ;
var value=add.split(",");
count=value.length;
country=value[count-1];
state=value[count-2];
city=value[count-3];
x.innerHTML = "city name is: " + city;
}
else {
x.innerHTML = "address not found";
}
}
else {
x.innerHTML = "Geocoder failed due to: " + status;
}
}
);
}
同@Sanchit古普塔。
这部分if (results[0]) {
var add= results[0].formatted_address ;
var value=add.split(",");
count=value.length;
country=value[count-1];
state=value[count-2];
city=value[count-3];
x.innerHTML = "city name is: " + city;
}
只是安慰结果阵列
if (results[0]) {
console.log(results[0]);
// choose from console whatever you need.
var city = results[0].address_components[3].short_name;
x.innerHTML = "city name is: " + city;
}
在node.js中,我们可以使用节点地理编码 NPM模块从纬度,经度获取地址,
geo.js
var NodeGeocoder = require('node-geocoder');
var options = {
provider: 'google',
httpAdapter: 'https', // Default
apiKey: ' ', // for Mapquest, OpenCage, Google Premier
formatter: 'json' // 'gpx', 'string', ...
};
var geocoder = NodeGeocoder(options);
geocoder.reverse({lat:28.5967439, lon:77.3285038}, function(err, res) {
console.log(res);
});
输出:
节点地理位置。js
[ { formattedAddress: 'C-85B, C Block, Sector 8, Noida, Uttar Pradesh 201301, India',
latitude: 28.5967439,
longitude: 77.3285038,
extra:
{ googlePlaceId: 'ChIJkTdx9vzkDDkRx6LVvtz1Rhk',
confidence: 1,
premise: 'C-85B',
subpremise: null,
neighborhood: 'C Block',
establishment: null },
administrativeLevels:
{ level2long: 'Gautam Buddh Nagar',
level2short: 'Gautam Buddh Nagar',
level1long: 'Uttar Pradesh',
level1short: 'UP' },
city: 'Noida',
country: 'India',
countryCode: 'IN',
zipcode: '201301',
provider: 'google' } ]
感谢你提供的非常清晰的工作反馈,在节点地理编码器和@谷歌/地图之间会有什么区别吗?他们似乎也做了同样的事情,尽管 – Ade
都输出是相同的,但节点地理编码器是简化的模块来获取地址和@谷歌/地图是API来获取我们需要配置的地址。 –
- 1. 从城市名称获取经纬度
- 2. 从经纬度获取城市名称
- 3. 从经纬度得到国家,地区和城市名称(PHP)
- 4. 如何从城市名称获取经度,纬度android代码
- 5. 使用经度和纬度查找城市和州名称
- 6. 如何从城市名称中查找经纬度
- 7. 如何从经度和纬度找到城市?
- 8. 纬度和经度放置在.NET中的名称或城市
- 9. 如何在JavaScript中找到经纬度的城市名称?
- 10. 按城市或经度和纬度
- 11. 我想获得城市名称的经纬度
- 12. 如何转换经度和纬度到国家或城市?
- 13. 如何从GWT的MapVisualization的城市名称获取纬度/经度?
- 14. 如何使用纬度和经度获取位置名称或城市?
- 15. 如何获取城市的经纬度?
- 16. OSM - 提取街道名称,经纬度和城市
- 17. 从给定的城市名称获取经度和纬度的简单API
- 18. 过滤城市的经纬度与其他城市的距离(经纬度)?
- 19. iPhone中的Google地图 - 经度和纬度的城市和州名称
- 20. 如何根据纬度和经度获取城市?
- 21. 从特定语言的纬度,经度获取城市名称javascript api
- 22. 获取基于城市,邮编或街道名称的经度和纬度
- 23. 谷歌地图获取有城市名称的经纬度?
- 24. Android经纬度与GPS或城市名称
- 25. 如何从电话差距的经纬度中获取城市名称?
- 26. 如何获得城市中所有地区的经纬度值
- 27. 地理位置 - 如何从长期获得城市和纬度
- 28. 如何从R中的城市名称和国家获取经度和纬度坐标?
- 29. 如何经度阅读国家城市纬度的地图API
- 30. 经纬度和时区的主要城市名单
您需要找到一个提供此功能的Web服务。 – Deviland