Google地图,设置最小和最大滑块控件

时间:2009-11-10 10:08:37

标签: google-maps

我正在制作一个googlemap,一切正常,除了我似乎无法设置最大和最小缩放的事实(我想将级别限制为几个级别的默认缩放方式视图)

我尝试过使用map.getMimimumResolution,但这似乎不起作用 - 任何想法?

function initialize() {   
   var latlng = new google.maps.LatLng("<%=Html.Encode(Model.Field01.Field01) %>", "<%=Html.Encode(Model.Field01.Field03) %>");
    var myOptions = {
    zoom: 13,
        center: latlng,
        disableDefaultUI: false,
        navigationControl: true,
        navigationControlOptions: {style: google.maps.NavigationControlStyle.ZOOM_PAN},
        navigationControl: true,
        mapTypeId: google.maps.MapTypeId.ROADMAP

    };
    var map = new google.maps.Map(document.getElementById("mapcontainer"), myOptions);

    map.getMinimumResolution = function() { return 6 }; 

    var marker = new google.maps.Marker({
        position: latlng,
        map: map,
        title: "<%=Model.AccomName %>"
      });
}

任何想法,谢谢,

7 个答案:

答案 0 :(得分:17)

有适当的配置参数:)
简单的例子:

<script type="text/javascript">
var latlng = new google.maps.LatLng(42.3493337, 13.398172299999942);
var options = {
    zoom: 8,
    minZoom: 6,
    maxZoom: 10,
    center: latlng,
    mapTypeId: google.maps.MapTypeId.TERRAIN
};

map = new google.maps.Map(document.getElementById("map_canvas"), options);
</script>

这里有文件:
http://code.google.com/apis/maps/documentation/javascript/reference.html#MapOptions

快乐的编码!

答案 1 :(得分:4)

以下代码对我来说很顺利。没有闪烁,故障等.Maps API v3。

var inProcess = false;

function onZoomChanged() {
    if (inProcess) return;

    if (gmap.getZoom() > 16) {
        inProcess = true;
        gmap.setZoom(16);
        inProcess = false;
        return
    }
    else if (gmap.getZoom() < 10) {
        inProcess = true;
        gmap.setZoom(10);
        inProcess = false;
        return;
    }
}

google.maps.event.addListener(gmap, 'zoom_changed', onZoomChanged);

答案 2 :(得分:2)

如上所述,到目前为止我在V3中找到的唯一方法是使用事件监听器。这是代码(以最大缩放级别12为例):

google.maps.event.addListener(map, "zoom_changed", function() {
    if (map.getZoom() > 12) map.setZoom(12);
});

是的,丑陋,又脏又错,我知道。

答案 3 :(得分:1)

getMinimumResolution是GMapType方法,而不是GMap2方法。所以不要这样:

map.getMinimumResolution = function() { return 6 };

你可以这样做:

var mt = map.getMapTypes();

for (var i=0; i<mt.length; i++) {
  mt[i].getMinimumResolution = function() {return 6;}
}

答案 4 :(得分:0)

看起来您正在使用Maps API版本3,它无法设置最小和最大分辨率。至少还没有。

你可以随时收听缩放变化并重置缩放,如果它不是你想要的那样 - 但那将是非常难看的。 :)

答案 5 :(得分:0)

试试这个。适合我的工作

// force normal maps type
map.setMapType(G_NORMAL_MAP);

// define minimum and maximum zoom levels
G_NORMAL_MAP.getMinimumResolution = function() { return 0; }
G_NORMAL_MAP.getMaximumResolution = function() { return 19; }

答案 6 :(得分:0)

我遇到了同样的问题

n_customMap.getMinimumResolution = function() { return 5 }; 
n_customMap.getMaximumResolution = function() { return 10 }; 

对我有用

您还应该将选项设置为

minZoom: 5,
maxZoom: 10