如何在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 个动态地址为中心?

如何在我的 Bing 地图图钉上添加标签?

如何在注册时使用 google maps api 在全球地图中显示自动注册用户的地理位置?

使用 bing map api 获取地址(邮政编码)自动地理定位?

Win8.1应用开发之Bing Maps

Bing地图WPF添加位置标记