我正在使用Bing Maps v7控件。
我有一系列纬度/经度点。 (类型Microsoft.Map.Location
)
从该数组中,我可以使用LocationRect.fromLocations()
使用Map构造函数创建地图时,我可以使用该矩形的中心来居中地图。它看起来像这样:
var LLA = [
new Microsoft.Maps.Location(43.386,-111.6123),
new Microsoft.Maps.Location(43.4929, -112.0349),
new Microsoft.Maps.Location(43.2609,-115.7811),
...
];
var r = Microsoft.Maps.LocationRect.fromLocations(LLA);
var mapOptions = {
credentials : bingMapsKey,
center : r.center,
mapTypeId : Microsoft.Maps.MapTypeId.road,
zoom : 7
},
elt = document.getElementById('out2');
var map = new Microsoft.Maps.Map(elt, mapOptions);
这样可行,创建的地图以这些点为中心。如何设置Bing Map的缩放级别,以便显示整个矩形?
答案 0 :(得分:8)
忘记传递center
/ zoom
和pass the rectangle as bounds
instead:
var mapOptions = {
credentials : bingMapsKey,
bounds : r, // <-- HERE
mapTypeId : Microsoft.Maps.MapTypeId.road
}
答案 1 :(得分:0)
对于任何以我身份登陆并根据位置中心(纬度,经度)和以千米为单位的位置半径搜索BingMaps V8的缩放计算的人:
(也许您还在该位置的中心绘制了一个Microsoft.Maps.SpatialMath
的圆圈)
function getZoomLevel(radiusInKilometer: number, latitude: number, heightOfMapInPixels: number, widthOfMapInPixels: number): number {
const rangeInMeters = radiusInKilometer * 1000;
// we take the lower value of the bounding rect of the map, so the circle will be best seen
const limitBoundPixels = Math.min(heightOfMapInPixels, widthOfMapInPixels);
const zoom = Math.floor(Math.log(156543.03392 * Math.cos(latitude * Math.PI / 180) / (rangeInMeters / limitBoundPixels)) / Math.log(2));
return zoom;
}