2009-11-10 81 views
5

我在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 %>" 
     }); 
} 

知道的任何想法,感謝

+0

哪種語言,聞起來像java – 2009-11-10 10:25:49

+0

對不起,它的JavaScript。我不知道是否我只需要知道縮放控件的正確屬性 - 搜索google api並沒有發現任何對我而言有效的東西。 – ivor 2009-11-10 12:48:08

+0

你是否使用地圖v3 api工作?你可以發佈解決方案嗎? – Baz1nga 2011-04-21 20:13:09

回答

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;} 
} 
+0

感謝您的迴應,我已經嘗試了這一點,它似乎並不認可getMapTypes作爲一個功能,雖然 - 我已經看了這個和你已經佈置,它應該存在 - 你能想到爲什麼我的地圖不會識別getMapTypes?我已放棄在地圖對象聲明後提供的代碼 – ivor 2009-11-10 14:00:43

+0

您是否在使用Maps v3(Labs)? 從代碼片段中不清楚。我假設地圖v2是因爲它有一個maptype.getMinimumResolution方法,但如果你沒有得到map.getMapType,那麼你的問題可能是你正在使用API​​ v3的建議在其他答案之一。 下面是在我的一個v2教程地圖中工作的代碼: http://econym.org.uk/gmap/example_range.htm – 2009-11-10 22:13:42

+0

謝謝 - 地圖是用v3設置的 - 我會考慮讓這些工作現在開始。 – ivor 2009-11-11 10:19:57

0

它看起來像你使用Google Maps API第3版,它沒有辦法設置最小和最大決議。至少還沒有。

如果不是你想要的位置,你可以隨時監聽縮放變化並重置縮放 - 但這會非常難看。 :)

2

如上所述,我到目前爲止在V3中發現的唯一方法是使用事件監聽器。下面是代碼(最大縮放級別12爲例):

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

是的,醜陋,骯髒和錯誤,我知道。

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; } 
4

下面的代碼對我來說工作順利。沒有閃爍,毛刺等地圖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); 
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

謝謝。這應該是被接受的答案。 – 2013-01-27 08:41:18

0

我遇到了同樣的問題

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

爲我工作

你也應該設置的選項

minZoom: 5, 
maxZoom: 10 
相關問題