如何将7.0版bing地图中心设置为某个位置

时间:2014-07-31 14:53:51

标签: bing-maps

我使用的是Bing Maps API的7.0版。创建映射后,会将一组引脚推入映射类的EntityCollection对象中。接下来,我想将地图居中,以便在地图上查看所有这些针脚。地图的缩放大到足以容纳这个。在以前的版本中,使用了map.setMapView(),但BING Maps 7.0已经删除了此功能。

一些相关的代码:

map = new Microsoft.Maps.Map(document.getElementById("myMap"), mapOptions);
map.getCredentials(function(credentials) {
    var searchRequest = 'https://dev.virtualearth.net/REST/v1/Locations/' + address + '?output=json&jsonp=getLatLong&key=' + credentials;
    var mapscript = document.createElement('script');
    mapscript.type = 'text/javascript';
    mapscript.src = searchRequest;
    document.getElementById('myMap').appendChild(mapscript);
});
function getLatLong(json){
findPlaceResults = new Microsoft.Maps.Location(json.resourceSets[0].resources[0].point.coordinates[0], json.resourceSets[0].resources[0].point.coordinates[1]);
myShape = new Microsoft.Maps.Pushpin(findPlaceResults);
//...
var pins = new Array();
for (var i = 0; i < AllLocations.length; i++) {
    var shape = new Microsoft.Maps.Location(AllLocations[i].Latitude, AllLocations[i].Longitude);
    var pins = new Microsoft.Maps.Pushpin(shape);
    map.entities.push(pins);
}
map.entities.push(myShape);
if (map.entities.getLength() > 0) {
    //map.SetMapView(pins);
}

Code TLDR:发生了东西,尝试使用SetMapView,不起作用。

任何想法都会有所帮助!

2 个答案:

答案 0 :(得分:3)

创建引脚时,需要创建辅助数组才能实现目标。

Create array that contains all the locations converted to Microsoft location objects.
    // The array
    var arrLocations= [];

    for (var i = 0; i < AllLocations.length; i++) {
        var shape = new Microsoft.Maps.Location(AllLocations[i].Latitude,AllLocations[i].Longitude);
        // You add those two lines.
        var yourLocation= new Microsoft.Maps.Location(AllLocations[i].Latitude,AllLocations[i].Longitude);
        arrLocations.push(yourLocation);
        var pins = new Microsoft.Maps.Pushpin(shape);
        map.entities.push(pins);
    }

现在您使用bing maps功能,根据给定位置为您提供最佳缩放和指向。(LocationRect)

var bestView = Microsoft.Maps.LocationRect.fromLocations(arrLocations);

然后根据我们找到的最佳视图设置地图视图。

 setTimeout((function () {
        map.setView({ bounds: bestView });
    }).bind(this), 1000);

答案 1 :(得分:0)

好吧,我在这个网站找到了答案http://www.i-programmer.info/projects/131-mapping-a-gis/1609-getting-started-with-bing-maps-ajax-control-70.html?start=1

“如果你熟悉Map对象的早期版本,你需要知道新版本的方法要少得多。这个想法是新控件有很多接受复杂对象的方法,而不是有很多方法。一个指定大量设置的参数。

例如,原始地图控件的SetCenter方法会将地图位置移动到指定的纬度和经度。新的V7地图控件有一个setView方法,它接受一个ViewOptions对象,该对象又有一个可以设置为Location对象的center属性,该对象指定了地图的中心。“