javascript用のGoogleマップAPIを使用して、緯度と経度から市の名前を取得する方法はありますか?緯度と経度のポイントから都市名を取得するにはどうすればよいですか?
私は例をご覧ください。
javascript用のGoogleマップAPIを使用して、緯度と経度から市の名前を取得する方法はありますか?緯度と経度のポイントから都市名を取得するにはどうすればよいですか?
私は例をご覧ください。
これは、Googleからのドキュメント逆ジオコーディング
と呼ばれている:
http://code.google.com/apis/maps/documentation/geocoding/#ReverseGeocoding。
GoogleのジオコードWebサービスへのサンプル・コール:
http://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=true
驚くばかり!私はこれを読んで、そして今ではあまりにも多くのクエリの過度の来る;)ありがとう。 –
IPアドレスと1人あたりのユーザー数は、javascript APIを使用している場合と同じですが、たとえばPHPを使用している場合に、これらの制限に達すると思われる場合は、リクエストを1秒間に制限するか、プロキシサーバーを使用するが、プロキシに注意する必要があります、Googleは愚かではない、あなたはそれらをハンマーできません。詳細はこちら: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
@merioありがとうございます。しかし、コードを作成しました。 –
ここで約束を使用して近代的なソリューションです:
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);
を約束は、コードの動作ファインは、都市名を取得するには、次の「キャッチ」
で「を」またはエラーステータスコードでアドレスオブジェクトを返します。 (Googleマップジオ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 @Sanchitグプタと同じ
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;
}
}
);
}
。この部分の
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;
}
結果だけ配列我々は緯度、LNGからアドレスを取得するためにノード-ジオコーダ NPMモジュールを使用することができますNode.jsので
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;
}
を慰める。、
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' } ]
非常に明確で実用的なフィードバックをいただきありがとうございます。「node-geocoder」と「@ google/maps」の選択に違いがありますか?同じように表示されますが、どちらも出力されます。 – Ade
両方の出力同じですが、ノードジオコーダーはアドレスを取得するための単純化されたモジュールであり、@ google/mapsは設定する必要のあるアドレスを取得するためのAPIです。 –
これを提供するWebサービスが必要です。 – Deviland