如何在bing map api中动态添加用户的位置
Posted
技术标签:
【中文标题】如何在bing map api中动态添加用户的位置【英文标题】:how to add location of user's dynamically in bing map api 【发布时间】:2021-10-22 12:57:57 【问题描述】:我正在使用 Bing 地图 API,并且我在 GetMap 函数中手动提供位置(纬度和经度)以进行反向地理编码,以便我可以获取地址名称
function GetMap()
map = new Microsoft.Maps.Map('#myMap',
credentials: 'AslSzT37W6m8TEyrfWNFWOi-yLdclSoXdv0j',
center: new Microsoft.Maps.Location( 22.6589, 78.5589), #manually putting lat&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 Log&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();
定义 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);
【讨论】:
以上是关于如何在bing map api中动态添加用户的位置的主要内容,如果未能解决你的问题,请参考以下文章
Google Maps API v3:如何以 2 个动态地址为中心?
如何在注册时使用 google maps api 在全球地图中显示自动注册用户的地理位置?