2009-05-05 12 views
80

मैं Google मानचित्र API का उपयोग कर रहा हूं और मार्कर जोड़ चुका हूं। अब मैं प्रत्येक मार्कर के चारों ओर एक 10 मील त्रिज्या जोड़ना चाहता हूं, जिसका मतलब है कि एक सर्कल जो ज़ूमिंग के दौरान उचित व्यवहार करता है। मुझे नहीं पता कि यह कैसे करना है और ऐसा लगता है कि यह कुछ आम नहीं है।Google मानचित्र में एक बिंदु के चारों ओर त्रिज्या ड्रा

I found one example that looks good, और आप भी Google अक्षांश पर एक नज़र डाल सकते हैं। वहां वे एक त्रिज्या के साथ मार्कर का उपयोग करते हैं, जैसा कि मैं उन्हें चाहता हूं।

अद्यतन: Google अक्षांश an image का उपयोग करता है जो स्केल किया गया है, यह कैसे काम करेगा?

+0

देखें मामले में यह उपयोगी है, इस का एक उदाहरण देखा जा सकता है [यहां] (http://www.freemaptools.com/radius-around-point.htm), एक खींचने योग्य त्रिज्या के साथ पूरा । –

उत्तर

207

Google मानचित्र API V3 का उपयोग करके, एक सर्किल ऑब्जेक्ट बनाएं, फिर अपने मार्कर की स्थिति से बांधने के लिए bindTo() का उपयोग करें (क्योंकि वे दोनों google.maps.MVCObject उदाहरण हैं)।

// Create marker 
var marker = new google.maps.Marker({ 
    map: map, 
    position: new google.maps.LatLng(53, -2.5), 
    title: 'Some location' 
}); 

// Add circle overlay and bind to marker 
var circle = new google.maps.Circle({ 
    map: map, 
    radius: 16093, // 10 miles in metres 
    fillColor: '#AA0000' 
}); 
circle.bindTo('center', marker, 'position'); 

आप इसे fillColor, strokeColor, strokeWeight आदि (full API) बदलकर सिर्फ गूगल अक्षांश चक्र की तरह लग रहे बना सकते हैं।

और देखें source code and example screenshots

+2

Google मानचित्र API https://web.archive.org/web/20120312044803/http://code.google.com/apis/maps में "मजेदार ऑब्जेक्ट्स के साथ मज़ा" आलेख में इसका एक अच्छा उदाहरण भी है /articles/mvcfun.html – Johan

10

ऐसा लगता है कि इसे प्राप्त करने का सबसे आम तरीका GPolygon को एक सर्कल अनुकरण करने के लिए पर्याप्त बिंदुओं के साथ आकर्षित करना है। आपके द्वारा संदर्भित उदाहरण इस विधि का उपयोग करता है। This page का एक अच्छा उदाहरण है - स्रोत कोड में drawCircle फ़ंक्शन देखें।

+0

हैलो @ क्रिस बी http://esa.ilmari.googlepages.com/circle.htm एक शानदार लिंक है, लेकिन यह वी 2 में किया जाता है, क्या आप v3 कोड प्रदान कर सकते हैं ??? –

9

गोलाकार ज्यामिति आकार में उन पंक्तियों के बीच बिंदुओं, रेखाओं और कोणों द्वारा परिभाषित किया जाता है। आपके पास काम करने के लिए केवल उन प्राथमिक मूल्य हैं।

इसलिए एक सर्कल (किसी क्षेत्र पर प्रक्षेपित आकार के संदर्भ में) कुछ ऐसा है जो अंक का उपयोग करके अनुमानित किया जाना चाहिए। अधिक अंक, जितना अधिक यह एक सर्कल की तरह दिखेगा।

यह कहकर, यह महसूस करें कि Google नक्शे projecting the earth onto a flat surface है (लगता है कि "अनलॉकिंग" पृथ्वी और खींचने तक + फ़्लैटनिंग "वर्ग" दिखाई देती है)। और यदि आपके पास एक फ्लैट समन्वय प्रणाली है तो आप जिस पर चाहें उस पर 2 डी ऑब्जेक्ट्स खींच सकते हैं।

दूसरे शब्दों में आप एक Google मानचित्र पर एक स्केल किए गए वेक्टर सर्कल को आकर्षित कर सकते हैं। पकड़ यह है कि, Google मानचित्र आपको बॉक्स से बाहर नहीं देता है (वे जीआईएस मूल्यों के करीब रहना चाहते हैं जैसा कि व्यावहारिक रूप से संभव है)। वे केवल आपको GPolygon देते हैं जो वे चाहते हैं कि आप एक सर्कल का अनुमान लगाने के लिए उपयोग करें। हालांकि, this guy did it अन्य ब्राउज़रों के लिए आईई और एसवीजी के लिए वीएमएल का उपयोग करके ("स्केल सर्कल" अनुभाग देखें)।

अब, एक स्केल किए गए सर्कल छवि का उपयोग करके Google अक्षांश के बारे में आपके प्रश्न पर वापस जा रहा है (और यह शायद आपके लिए सबसे उपयोगी है): यदि आपको पता है कि आपके सर्कल का त्रिज्या कभी नहीं बदलेगा (उदाहरण के लिए यह हमेशा कुछ मील के आसपास है बिंदु), तो सबसे आसान समाधान GGroundOverlay का उपयोग करना होगा, जो कि छवि का प्रतिनिधित्व करता है, केवल एक छवि url + GLatLngBounds है। आपको केवल एक ही काम करने की आवश्यकता है जो GLatLngBounds को आपके 10 मील त्रिज्या का प्रतिनिधित्व करता है। एक बार आपके पास यह हो जाने के बाद, Google मानचित्र एपीआई आपकी छवि को स्केल करता है क्योंकि उपयोगकर्ता ज़ूम इन और आउट करता है।

+6

ग्रेट उत्तर। आईओओ का अर्थ है अन्य शब्दों और ओओटीबी में बॉक्स के बाहर, उन लोगों के लिए जिन्हें मैंने इसे देखने की आवश्यकता है। दुर्भाग्य से –

4

मैंने पहले भी इस समस्या को मिला है, इसलिए मैं इस discussion.

बुकमार्क किए गए यह संक्षेप में, आप कर सकते हैं:

  1. इस circle filter के स्रोत कोड पर एक नज़र डालें और कैसे यह पता लगाने इसे अपनी परियोजना में शामिल करने के लिए।
  2. एक सर्कल अनुकरण करने के लिए पर्याप्त बिंदुओं के साथ एक GPolygon ड्रा।
  3. http://www.nearby.org.uk/google/circle.kml.php?radius=30miles&lat=40.173&long=-105.1024 संशोधित करके और फिर इसे आयात करके एक केएमएल फ़ाइल जेनरेट करें। Google मानचित्र में, आप केवल खोज बॉक्स में यूआरआई पेस्ट कर सकते हैं और यह मानचित्र पर प्रदर्शित होगा। मुझे यकीन नहीं है कि आप एपीआई का उपयोग करके इसे कैसे कर सकते हैं।
1

मैं सिर्फ एक ब्लॉग लेख है कि वास्तव में यह है, जो आपके लिए उपयोगी हो सकता है के पते में लिखा है: http://seewah.blogspot.com/2009/10/circle-overlay-on-google-map.html

मूल रूप से, आप सही GLatLngBounds के साथ एक GGroundOverlay बनाना होगा। मुश्किल बिट दक्षिणपश्चिमी कोने समन्वय और वांछित त्रिज्या के आधार पर इस सर्कल को बांधने वाली इस इमेजरीरी स्क्वायर (GLatLngBounds) के पूर्वोत्तर कोने समन्वय को काम करने में काम कर रहा है। गणित काफी जटिल है, लेकिन आप ब्लॉग में getDestLatLng फ़ंक्शन का संदर्भ ले सकते हैं। बाकी बहुत सरल होना चाहिए।

2

एक API v3 के समाधान के लिए, संदर्भित करने के लिए:

http://blog.enbake.com/draw-circle-with-google-maps-api-v3

यह अंक के आसपास वृत्त बनाता है और फिर भीतर और अलग अलग रंग के साथ सीमा से बाहर मार्कर दिखा। वे गतिशील त्रिज्या की भी गणना करते हैं लेकिन आपके मामले में त्रिज्या तय किया जाता है इसलिए कम काम हो सकता है।

+1

पृष्ठ नहीं मिला। – jsims281

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