2010-01-17 20 views
5

पर आधारित एक Google मानचित्र को केंद्रित करना, मैं मानचित्र पर लगभग 20 मार्कर, शहर के स्थानों पर साजिश कर रहा हूं। जब मैं शहर के केंद्र को खोजने के लिए getLatLng का उपयोग करता हूं, तो यह उन स्थानों से हमेशा थोड़ा सा हटा दिया जाता है, जिनकी मैं साजिश कर रहा हूं, जिसका अर्थ यह है कि मार्कर आमतौर पर केंद्र के बजाय मेरे मानचित्र के कोने में स्थित होते हैं।मार्कर लेट लंबे मान

क्या मेरे स्थान के लिए अधिक केंद्रीय स्थान पर मानचित्र को केन्द्रित करने का कोई तरीका है? मुझे लगता है कि मुझे उपलब्ध कुछ 20 अक्षांश/लंबे मूल्यों से गणना की गई "औसत" लेट/लंबी समन्वय की आवश्यकता है।

क्या यह संभव है?

उत्तर

6

केंद्र ढूंढना बहुत आसान होना चाहिए। बस 20 के अपने समूह में सबसे छोटे और सबसे बड़े अक्षांश और देशांतर निर्देशांक पाएं।

केंद्र [min_lat + (max_lat - min_lat)/2, min_long + (max_long - min_long)/2] होगा।

कुछ की तरह:

var points = Array(); 
points.push(new GLatLng(xxx, yyy)); 
... 

min_lat = 90; 
max_lat = -90; 
min_long = 180; 
max_long = -180; 
for (p in points) { 
    if (p[0] < min_lat) { 
     min_lat = p[0]; 
    } 
    if (p[0] > max_lat) { 
     max_lat = p[0]; 
    } 
    if (p[1] < min_long) { 
     min_long = p[1]; 
    } 
    if (p[1] > max_long) { 
     max_long = p[1]; 
    } 
} 

center = new GLatLng(min_lat + (max_lat - min_lat)/2, 
        min_long + (max_long - min_long)/2]; 
map.setCenter(center, 10); 

इस कोड को शायद मुसीबत होगा अपने अंक देशांतर सीमाओं को पार करता है, तो (और plusmn; 180 °)। यह भी मानते हैं कि अंक एक सपाट सतह (एक क्षेत्र की सतह की बजाय) पर स्थित हैं।

यदि आप अमेरिका में एक दूसरे के कई सौ मील के भीतर निर्देशांक के बारे में बात कर रहे हैं तो इससे कोई फर्क नहीं पड़ता।

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