#javascript #api #bing-maps #reverse-geocoding #geocode
Вопрос:
Я использую API карт Bing и в этом я указываю местоположение (широту и долготу) вручную в функции GetMap для обратного геокодирования, чтобы я мог получить имя адреса
function GetMap() {
map = new Microsoft.Maps.Map('#myMap', {
credentials: 'AslSzT37W6m8TEyrfWNFWOi-yLdclSoXdv0j',
center: new Microsoft.Maps.Location( 22.6589, 78.5589), #manually putting latamp;Log
});
//Make a request to reverse geocode the center of the map.
reverseGeocode();
}
Теперь вместо того, чтобы указывать местоположение вручную в функции GetMap, я определяю местоположение пользователя с помощью кода ниже, который возвращает широту и долготу
//Request the user's location
navigator.geolocation.getCurrentPosition(function (position) {
var loc = new Microsoft.Maps.Location(
position.coords.latitude,
position.coords.longitude);
// Add a pushpin at the user's location.
var pin = new Microsoft.Maps.Pushpin(loc);
map.entities.push(pin);
//Center the map on the user's location.
map.setView({ center: loc, zoom: 15 });
//printing users location name in console
console.log(loc);
});
Теперь я хочу поместить широту и долготу этого пользователя в функцию GetMap
center: new Microsoft.Maps.Location( 22.0365682, 78.9255313), # want to put User's Logamp;Lat dynamically
чтобы я мог изменить геокод пользователя и получить имя адреса
Ответ №1:
Сначала я запрашиваю у пользователя местоположение и беру местоположение пользователя (широту и долготу) в переменной x и y и передаю аргумент x и y в функцию getmap.
let map, searchManager;
let directionsManager;
// Requesting User location and generation of user's latitude and longitude
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(showPosition)
}
function showPosition(position){
var x = position.coords.latitude;
var y = position.coords.longitude;
GetMap(x,y);
}
В функции Getmap я беру аргументы x и y (широта и долгота) и центрирую их на карте.
Также в функции getmap вызывается функция reverseGeocode() для преобразования широты и долготы в имя адреса.
// Display the map and taking latitude and longitude to center the map
function GetMap(x,y) {
map = new Microsoft.Maps.Map('#myMap', {
credentials: 'Your credentials',
center: new Microsoft.Maps.Location( x, y),
zoom: 13
});
reverseGeocode();
}
Определение функции обратного геокода, а также оповещение пользователя о его адресе и печать адреса в консоли.
// Reverse the geocode(latitude and longitude)
function reverseGeocode() {
//If search manager is not defined, load the search module.
if (!searchManager) {
//Create an instance of the search manager and call the reverseGeocode function again.
Microsoft.Maps.loadModule('Microsoft.Maps.Search', function () {
searchManager = new Microsoft.Maps.Search.SearchManager(map);
reverseGeocode();
});
} else {
var searchRequest = {
location: map.getCenter(),
callback: function (r) {
//Tell the user the name of the result.
alert(r.name);
console.log(r.name);
},
errorCallback: function (e) {
//If there is an error, alert the user about it.
alert("Unable to reverse geocode location.");
}
};
//Make the reverse geocode request.
searchManager.reverseGeocode(searchRequest);
}
}