2011-04-18 10 views
10

मैं मानचित्र पर मार्कर/इन्फॉइंडो को अद्यतन करने वाला एक Google मानचित्र और आवधिकता (हर 30 सेकंड) शुरू कर रहा हूं। मैं स्वचालित रूप से ज़ूम इन करने के लिए बाउंड्स का उपयोग कर रहा हूं लेकिन यह सुनिश्चित करता हूं कि सभी मार्कर/infowindows दिखाई दे रहे हैं।मानचित्र के प्रारंभ होने के बाद Google मानचित्र v3 ज़ूम स्तर समायोजित करें

मेरी समस्या यह है कि नक्शा के किनारे पर infowindows रखा जाता है और अक्सर काट दिया जाता है। तो, मानचित्र को अपडेट होने पर मुझे '1' द्वारा ज़ूम आउट करने की आवश्यकता है। मैं वर्तमान ज़ूम स्तर को निर्धारित करने के लिए 'map.zoom' का उपयोग कर सकता हूं और नया, वांछित मान पुन: गणना कर सकता हूं लेकिन मुझे नहीं पता कि यह नया मान कैसे सेट करें।
क्या ज़ूम पैरामीटर केवल मानचित्र को शुरू करने पर सेट किया जा सकता है?

निश्चित रूप से यह आसान है?

नीचे मेरा 'अपडेट' फ़ंक्शन है;

function updatePage() { 
//clear current markers 
clearOverlays(); 

var location1 = new google.maps.LatLng(team1data.lat, team1data.lon); 
var location2 = new google.maps.LatLng(team2data.lat, team2data.lon); 
var bounds = new google.maps.LatLngBounds(); 
bounds.extend(location1); 
bounds.extend(location2); 
map.fitBounds(bounds); 
var curZoom = map.zoom; 
console.log(curZoom); 
var newZoom = (curZoom - 1); 
console.log(newZoom); 



var infowindow1 = new google.maps.InfoWindow({ 
content: '<div style=\"height:100px;width:230px;font-size:12px;\"><span style="font-weight:bold;">' + team1data.user + ' (' + team1data.location + '): </span>' + team1data.tweet + '</div>' 
}); 

var infowindow2 = new google.maps.InfoWindow({ 
content: '<div style=\"height:100px;width:230px;font-size:12px;\"><span style="font-weight:bold;">' + team2data.user + ' (' + team2data.location + '): </span>' + team2data.tweet + '</div>' 
}); 

//can add as many markers to the map as you like 
var marker1 = new google.maps.Marker({ 
    position: location1, 
    map: map, 
    title: "Team 1" 
}); 
markersArray.push(marker1); 

google.maps.event.addListener(marker1, 'click', 
function() { 
    infowindow.open(map, marker); 
}); 

var marker2 = new google.maps.Marker({ 
position: location2, 
map: map, 
title:"Team 2" 
}); 
markersArray.push(marker2); 

infowindow1.open(map, marker1); 
infowindow2.open(map, marker2); 

setTimeout("team1tweets()", 30000) 
} 

उत्तर

22

एपीआई संदर्भ के अनुसार, आप map.setZoom (संख्या) का उपयोग कर सकते हैं;

https://developers.google.com/maps/documentation/javascript/reference#methods

यह भी map.getZoom उपयोग करने के लिए(), ज़ूम स्तर प्राप्त करने के लिए के रूप में map.zoom केवल आप प्रारंभिक ज़ूम स्तर, नहीं वर्तमान एक बताएगा बेहतर है।

+0

यही वह है। धन्यवाद! – Jono

+4

कुछ मामलों में setZoom (..) कुछ ऑपरेशन के तुरंत बाद कॉल नहीं किया जाता है। एक अन्य उत्तर वर्णन करता है कि नक्शा स्वीकार करने के लिए तैयार होने पर ऑपरेशन करने के लिए "निष्क्रिय" ईवेंट का उपयोग कैसे करें: http://stackoverflow.com/questions/2437683/google-maps-api-v3-can-i-setzoom-after -फिटबाउंड –

+0

लिंक टूटा हुआ है। – candlejack

संबंधित मुद्दे