Google मानचित्र में एक बिंदु के चारों ओर त्रिज्या बनाएं


93

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

मुझे एक उदाहरण मिला जो अच्छा लगता है , और आप Google अक्षांश पर भी नज़र डाल सकते हैं। वहां वे मार्करों का उपयोग एक त्रिज्या के साथ करते हैं, जैसे मैं उन्हें चाहता हूं।

अपडेट: Google अक्षांश एक छवि का उपयोग करता है, जिसे स्केल किया गया है, यह कैसे काम करेगा? (सुविधा समाप्त)


मामले में यह उपयोगी है, इसका एक उदाहरण यहां देखा जा सकता है , एक ड्रैगबल त्रिज्या के साथ पूरा किया गया।
कैम जैक्सन

जवाबों:


235

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');

आप भरण चक्र, स्ट्रोकचोर, स्ट्रोक वाइट आदि ( पूर्ण एपीआई ) को बदलकर इसे Google अक्षांश सर्कल की तरह बना सकते हैं ।

अधिक स्रोत कोड देखें और स्क्रीनशॉट का उदाहरण दें



10

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


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

9

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

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

ऐसा कहने के बाद, महसूस करें कि Google मानचित्र पृथ्वी को एक सपाट सतह पर पेश कर रहा है (लगता है कि पृथ्वी को "अनियंत्रित" किया गया है और तब तक + चपटा हुआ है जब तक कि यह "वर्ग" नहीं दिखता)। और अगर आपके पास एक समतल समन्वय प्रणाली है तो आप उस पर 2 डी ऑब्जेक्ट खींच सकते हैं जो आप चाहते हैं।

दूसरे शब्दों में, आप एक गूगल मैप पर एक छोटा वेक्टर सर्कल बना सकते हैं । पकड़ है, गूगल मैप्स आपको इसे बॉक्स से बाहर नहीं देता है (वे व्यावहारिक रूप से जीआईएस मूल्यों के करीब रहना चाहते हैं)। वे आपको केवल GPolygon देते हैं जो वे चाहते हैं कि आप एक वृत्त का उपयोग करें। हालांकि, इस व्यक्ति ने आईई और एसवीजी के लिए अन्य ब्राउज़रों के लिए vml का उपयोग किया ("SCALED CIRCLES" अनुभाग देखें)।

अब, स्केल्ड सर्कल छवि (और यह संभवतः आपके लिए सबसे उपयोगी है) का उपयोग करके Google अक्षांश के बारे में आपके प्रश्न पर वापस जा रहा है: यदि आप जानते हैं कि आपके सर्कल की त्रिज्या कभी नहीं बदलेगी (जैसे कि यह हमेशा कुछ बिंदु के आसपास 10 मील है), तो सबसे आसान समाधान एक GGroundOverlay का उपयोग करना होगा , जो कि सिर्फ एक छवि है url + GLATLngBounds छवि का प्रतिनिधित्व करता है। एकमात्र कार्य जो आपको करने की आवश्यकता है, वह आपके 10 मील के त्रिज्या का प्रतिनिधित्व करने वाले GLLLngBounds को कैश करना है । एक बार जब आप ऐसा कर लेते हैं, तो Google मैप्स एपीआई आपकी छवि को उपयोगकर्ता के अंदर और बाहर के रूप में स्केल कर देता है।


6
बहुत बढ़िया जवाब। IOW का अर्थ है दूसरे शब्दों में और OOTB का अर्थ आउट ऑफ द बॉक्स है, उन लोगों के लिए जिन्हें इसे देखने की जरूरत है जैसे मैंने किया।
एंथनी हिस्कोक्स

4

मुझे अतीत में यह समस्या रही है, इसलिए मैंने इस चर्चा को बुकमार्क किया

इसे संक्षेप में, आप कर सकते हैं:

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

2

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

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


2

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

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

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


1
पेज नहीं मिला, दुर्भाग्य से।
jsims281
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.