2010-08-04 10 views
11

मैं अपने एप्लिकेशन में Google मानचित्र का उपयोग कर रहा हूं, और मेरे पास लेट/लॉन मानों से भरे डेटाबेस के साथ एक वेबसर्वर है। मैं उन्हें मानचित्र पर चिह्नित करना चाहता हूं, लेकिन अगर वे एक दूसरे की निश्चित पिक्सेल-दूरी के भीतर हैं तो मैं उन्हें एक साथ क्लस्टर करना चाहता हूं।लेट/लॉन को पिक्सल में कनवर्ट करें और

clusters[]; 
while(count(points)) { 
    cluster[]; 
    point = points.pop(); 
    boundingbox = pixelsToBB(point, pixeldistance, zoomlevel); 
    query = "select * from database where lat > boundingbox.minlat 
      and lat < boundingbox.maxlat and lng > boundingbox.minlng 
      and lng < boundingbox.maxlng"; 
    for (result in executedquery) { 
     cluster[] += result; 
     points.remove(result); 
    } 
    clusters[] += cluster; 
} 

pixelsToBB(point, distance, zoomlevel) { 
    center = convertXY(point, zoomlevel); 
    maxlng = convertToLng(center.X, distance, zoomlevel); 
    minlng = convertToLng(center.X, -distance, zoomlevel); 
    minlat = convertToLat(center.Y, -distance, zoomlevel); 
    maxlat = convertToLat(center.Y, distance, zoomlevel); 
    return boundingbox(maxlng, maxlat, minlng, minlat); 
} 

zoomlevel साथ क्या करना है मेरी pixelsToBB समारोह की आवश्यकता होगी:

मैं समझ अगर मैं डेटाबेस से मेरी सभी बिंदुओं को पुनः प्राप्त है, मैं इस (स्यूडोकोड) की तरह कुछ करने के लिए सक्षम होना चाहिए? या बल्कि मेरा कन्वर्ट टॉक्सएक्स, कन्वर्ट टोलिंग और कन्वर्ट टोलैट को क्या करना होगा? क्या मैं इस बारे में सही तरीके से सोच रहा हूं, या क्या ऐसा करने के कोई बेहतर तरीके हैं? मुझे यह भी सुनिश्चित नहीं है कि क्या खोजना है, इसलिए यदि मुझे खेद है तो इससे पहले पूछा गया है।

उत्तर

7

का उपयोग करते हुए गूगल मैप्स एपीआई v3:

var latLng = // your position object here 
var projection = map.getProjection(); 
var bounds = map.getBounds(); 
var topRight = projection.fromLatLngToPoint(bounds.getNorthEast()); 
var bottomLeft = projection.fromLatLngToPoint(bounds.getSouthWest()); 
var scale = Math.pow(2, map.getZoom()); 
var worldPoint = projection.fromLatLngToPoint(latLng); 
return [Math.floor((worldPoint.x - bottomLeft.x) * scale), Math.floor((worldPoint.y - topRight.y) * scale)]; 
7

Google मानचित्र API के लिए दस्तावेज़ के भाग के रूप में this page पर ऐसा करने के लिए एक जावास्क्रिप्ट उदाहरण है। ध्यान रखें कि इसे देखने के लिए आपको पृष्ठ स्रोत को देखने की आवश्यकता है। यह एक वास्तविक दस्तावेज पृष्ठ नहीं बल्कि एक उदाहरण है।

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