0

所以我试图使用带有 Bing Map API 的 javascript 来限制缩放。现在我在这里看到了这个问题,但解决方案并不完全是我想要的。

可以通过调用这些来查看 zoomRange:

map.getZoomRange().max;
map.getZoomRange().min;

我想要的是能够设置这些。我似乎在 MapOption 对象中找不到任何东西。

我想要的一个例子是在这个网站上:http: //www.suncadiaresort.com/interactive-resort-map

现在,如果您尝试使用他们在地图上的控件进行缩放,则会有明确的最大和最小缩放。

但是这里给出的解决方案,Restrict the min/max zoom on a Bing Map with v7 of AJAX control?没有明确的最大值或最小值。它正在检查用户是否滚动过该点,然后设置缩放。这会导致抖动并且并不总是能够捕捉到。

我真的只是希望能够设置最大缩放和最小缩放,这样地图就不会比示例站点中的地图滚动得更远(或必要时向内)。

至于代码,我使用了另一个问题的第二个建议,但我也会在这里展示。

我从事件处理程序调用函数:

Microsoft.Maps.Events.addHandler(map, 'targetviewchanged', restrictZoom(map, 12, 18, mapCenter));

这是功能:

function restrictZoom(map,min,max, mapCenter)
{
    Microsoft.Maps.Events.addHandler(map, 'targetviewchanged',function()
    {
        var targetZoom = map.getTargetZoom();
        var adjZoom = targetZoom;

        if(targetZoom > max)
        {

            adjZoom = max;  
        }
        else if(targetZoom < min)
        {
            adjZoom = min;  
        }

        if(targetZoom != adjZoom)
        {
            map.setView({center: mapCenter, zoom:adjZoom}); 
        }
   });
}
4

2 回答 2

3

在 v8 中,现在可以通过在 MapOptions 对象上设置选项来使用它。

var map = new Microsoft.Maps.Map(document.getElementById('myMap'), {
    credentials: 'YOUR_BING_MAPS_KEY',
    minZoom: 4,
    maxZoom: 12
});
于 2017-08-08T13:17:10.047 回答
1

因此,通过更多的研究和大量的摆弄,Restrict the min/max zoom on a Bing Map with v7 of AJAX control 的答案是什么?似乎仍然是我能找到的唯一解决方案。如果 MapOptions 对象能够设置 zoomRange 级别,那就太好了。但据我所知,这是不可能的。

于 2013-09-17T16:46:54.237 回答