2009-11-10 11 views
5

मैं एक Googlemap पर काम कर रहा हूं, जो सभी ठीक काम करता है, इस तथ्य के अलावा कि मैं अधिकतम और न्यूनतम ज़ूम सेट नहीं कर सकता (मैं स्तर को सीमित करना चाहता हूं कुछ स्तरों को डिफ़ॉल्ट ज़ूम दृश्य का कोई भी तरीका)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 %>" 
     }); 
} 

किसी भी विचार की सराहना की, धन्यवाद

+0

कौन सी भाषा के लिए विकल्पों को सेट करना चाहिए में भाग जैसे जावा –

+0

क्षमा बदबू आ रही है, यह जावास्क्रिप्ट है। मुझे यकीन नहीं है कि अगर मुझे ज़ूम नियंत्रणों के लिए सही गुणों को जानने की ज़रूरत है - तो Google एपीआई को खोजना मेरे लिए अब तक काम करने वाली कुछ भी नहीं है। – ivor

+0

क्या आप इसे v3 api के साथ काम कर रहे हैं? क्या आप समाधान पोस्ट कर सकते हैं? – Baz1nga

उत्तर

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

+0

की घोषणा के बाद मैंने आपके द्वारा प्रदान किए गए कोड को छोड़ दिया है क्या आप मानचित्र v3 (लैब्स) का उपयोग कर रहे हैं? यह आपके कोड स्निपेट से स्पष्ट नहीं है। मैं मैप्स v2 मानता था क्योंकि इसमें maptype.getMinimumResolution विधि है, लेकिन अगर आपको नक्शा नहीं मिल रहा है .getMapType तो आपकी समस्या यह हो सकती है कि आप एपीआई v3 का उपयोग कर रहे हैं जैसा कि अन्य उत्तरों में से एक में सुझाया गया है। यहां मेरे वी 2 ट्यूटोरियल मानचित्रों में से एक में काम करने वाला कोड है: http://econym.org.uk/gmap/example_range.htm –

+0

धन्यवाद - मानचित्र v3 के साथ स्थापित किया गया था - मैं अब इन कामों को प्राप्त करने में देखूंगा। – ivor

0

ऐसा लगता है कि मैप्स एपीआई संस्करण 3 है, जो न्यूनतम और अधिकतम स्थापित करने के लिए एक तरह से नहीं है उपयोग कर रहे हैं प्रस्तावों। अभी तक कम से कम नहीं।

आप हमेशा ज़ूम परिवर्तनों को सुन सकते हैं और ज़ूम रीसेट कर सकते हैं यदि यह वह जगह नहीं है जहां आप इसे चाहते हैं - लेकिन यह बहुत बदसूरत होगा। :)

2

ऊपर वर्णित अनुसार, वी 3 में ऐसा करने का एकमात्र तरीका यह है कि यह एक ईवेंट श्रोता के साथ है। यहाँ (एक उदाहरण के रूप अधिकतम ज़ूम स्तर 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

नीचे कोड मेरे लिए आसानी से काम करता है। कोई झिलमिलाहट, glitches, आदि मैप्स एपीआई 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

धन्यवाद। यह स्वीकार्य उत्तर होना चाहिए। –

0

मैं, एक ही समस्या

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

कि मेरे लिए काम किया

आप भी

minZoom: 5, 
maxZoom: 10 
संबंधित मुद्दे