2011-03-08 15 views
26

मुझे एक छोटा ऐप मिला जो Google मानचित्र की दिशा सेवा सुविधा का उपयोग करता है। यह अच्छी तरह से काम कर रहा है, मैं मार्ग बदल सकता हूं, लेकिन मुझे एक छोटी सी समस्या है, जहां कोई उपयोगकर्ता मार्ग का पता लगाने के बाद मार्करों की सूची में वापस जा सकता है।Google मानचित्र के साथ मार्ग हटाएं

मुझे Google मानचित्र के साथ मार्ग हटाने के लिए कोई रास्ता नहीं मिल रहा है। मार्करों के लिए मैं उन्हें स्टोर करता हूं और setMap(null) करता हूं, यहां कोई रास्ता नहीं दिखता है ...

उत्तर

28

यदि आप मार्गों को प्रदर्शित करने के लिए दिशा-निर्देशक का उपयोग कर रहे हैं, तो आप भी सेटमैप (शून्य) को कॉल कर सकते हैं। इस तरह आप प्रदर्शित मार्ग को हटा दें।

उदाहरण कोड यहाँ http://code.google.com/apis/maps/documentation/javascript/examples/directions-simple.html

का उपयोग सिर्फ

directionsDisplay.setMap(null); 
+3

यदि आप ऐसा करते हैं, तो यह वापस आता है जब आप किसी अन्य मार्ग से ओवरराइट करने का प्रयास करते हैं, तो आपको नक्शे पर दिखाए जाने वाले दोनों मार्ग मिलते हैं। – ajbraus

+0

यह सच नहीं है! मैंने अभी एक छोटे पीओसी में परीक्षण किया। जब आप 'दिशानिर्देश Display.setDirections (दिशानिर्देश)' चलाते हैं और 'निर्देशक Display.setMap (मानचित्र)' के साथ मानचित्र में रेंडरर को वापस जोड़ते हैं, तो यह सही तरीके से काम करता है। यह केवल एक पथ प्रदर्शित करता है ('दिशानिर्देश 'चर की सामग्री)। आपके कोड में कुछ और समस्या होनी चाहिए। – Tomik

+2

यह आपके मानचित्र से दिशा-निर्देश ऑब्जेक्ट को हटाने के लिए काम करता है, लेकिन यदि आप एक मार्ग को दूसरे स्थान से बदल रहे हैं तो यह केवल एक को मानचित्र में जोड़ता है। – ajbraus

41

तुम भी इस्तेमाल कर सकते हैं फोन:

directionsDisplay.setDirections({routes: []}); 

इस तरह, आप के लिए एक दाता के साथ एक मानचित्र का उपयोग रख सकते सभी मार्ग

+2

को हल करता है यह मेरे लिए एक बेहतर समाधान है क्योंकि यदि आप फिर से दिशा-निर्देश प्राप्त करने का प्रयास करते हैं तो पहला समाधान एक जेएस त्रुटि फेंक देगा। हालांकि, मैंने 'दिशानिर्देश डिस्प्ले.सेट डायरेक्शन ({मार्ग: []});' – DemitryT

+1

मैं सहमत हूं कि शाब्दिक उपयोग नए कीवर्ड के उपयोग से बेहतर समाधान है, मैंने अपना जवाब अपडेट कर दिया है। – thomaux

+1

इससे मुझे एक ही मानचित्र का उपयोग करने की अनुमति नहीं मिली। यह सिर्फ एक ही मानचित्र पर एक-दूसरे के ऊपर मार्गों को ढेर करता है। – ajbraus

4

अन्य उत्तरों मेरे लिए काम नहीं किया। मैं से this question

एक समाधान पाया परिभाषित directionsDisplay केवल 1 (click -handler के बाहर) समय

1

मैं इसी तरह की समस्या थी, मैं directionsDisplay.setMap(null); साथ करने की कोशिश की, लेकिन यह काम नहीं किया।

समस्या directionsDisplay ऑब्जेक्ट था जिसे मैंने स्थानीय रूप से घोषित किया था।

मैंने इसे वैश्विक में बदल दिया और हर बार फ़ंक्शन कहलाता है, यह उसी वैश्विक directionsDisplay ऑब्जेक्ट का उपयोग करेगा और इसमें बदलाव करेगा। यह निश्चित रूप से उसी ऑब्जेक्ट पर प्रदर्शित पिछले मार्ग को हटा देगा।

3

इस सुधार में

// Clear past routes 
if (directionsDisplay != null) { 
    directionsDisplay.setMap(null); 
    directionsDisplay = null; 
} 
+0

निश्चित रूप से सबसे अच्छा जवाब, धन्यवाद !!! – SachaDee

3

छुपा देगा प्रत्येक कॉल पर के बाद से, DirectionRenderer का नया उदाहरण thats क्यों प्रत्येक नया उदाहरण पिछले उदाहरण से अनजान है बनाया।

ले जाएँ

var directionsDisplay = new google.maps.DirectionsRenderer(); 
वैश्विक को

(ऊपर जहां अन्य सभी वैश्विक चर प्रारंभ कर दिया है पर।)

इसलिए हर बार कर रही है, के द्वारा आप DirectionRenderer का एक उदाहरण का उपयोग करते हुए किया जाएगा।

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