Google maps, настройка минимального и максимального управления ползунком - PullRequest
5 голосов
/ 10 ноября 2009

Я работаю над картой Google, которая работает нормально, за исключением того факта, что я не могу установить максимальное и минимальное увеличение (я хотел бы ограничить уровни парой уровней в любом случае по умолчанию) вид)

Я пытался использовать 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 ]

17 голосов
/ 30 мая 2011

Есть подходящий параметр конфигурации :)
Простой пример:

<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

Удачного кодирования!

4 голосов
/ 25 июня 2010

Код ниже работает для меня гладко. Отсутствие мерцания, глюков и т. Д. 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 голосов
/ 14 мая 2010

Как упомянуто выше, единственный способ, который я до сих пор нашел в V3, - это прослушивание событий. Вот код (для максимального уровня масштабирования 12 в качестве примера):

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

Да, уродливо, грязно и неправильно, я знаю.

1 голос
/ 10 ноября 2009

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;}
}
0 голосов
/ 01 марта 2012

Я столкнулся с той же проблемой

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

, который работал для меня

Вы также должны установить параметры

minZoom: 5,
maxZoom: 10
0 голосов
/ 23 мая 2010

Попробуй это. У меня отлично работает

// 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; }
0 голосов
/ 10 ноября 2009

Похоже, вы используете Maps API Version 3, в которой нет способа установить минимальное и максимальное разрешения. По крайней мере, пока.

Вы всегда можете прослушать изменения масштабирования и сбросить масштаб, если он не там, где вы хотите, но это было бы довольно уродливо. :)

...