我使用的是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,不起作用。
任何想法都会有所帮助!
答案 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属性,该对象指定了地图的中心。“