2012-02-15 11 views
12

संग्रहित करना मैं Google मानचित्र पर Google मानचित्र दिशा-निर्देश मार्ग को आसानी से स्टोर और फिर से चलाने में सक्षम होना चाहता हूं। मान लें कि बिंदु ए से बी तक, DirectionsResult Google से ऑब्जेक्ट में मार्ग के साथ 100 अंक हैं, मैं इस मार्ग को स्टोर करने में सक्षम होना चाहता हूं और अगली बार जब मैं इसे पेंट करता हूं तो गारंटी इन दिशाओं के माध्यम से दिशानिर्देश जाएगी।पूरा Google मानचित्र मार्ग

जिस तरह से मैंने लोगों को ऐसा करने का प्रयास किया है, वह पूरे दिशाओं को क्रमबद्ध करना है और इसे डेटाबेस में संग्रहीत करना है। फिर जब हम मार्ग को फिर से लेना चाहते हैं, तो स्ट्रिंग बैक अप भेजें, JSON। इसे पार्स करें, और उसके बाद इसे DirectionsRenderer ऑब्जेक्ट पर फ़ीड करने का प्रयास करें जो मानचित्र पर दिशानिर्देश प्रस्तुत करेगा।

1) आप क्रमबद्धता की प्रक्रिया के दौरान प्रकार की जानकारी खो देते हैं, और के बाद से गूगल वस्तुओं minnifies, आप वर्ग कार्यों का उपयोग करने के लिए वस्तु से बाहर मज़बूती से इन मूल्यों को प्राप्त करने में सक्षम नहीं हैं: यह दृष्टिकोण तीन समस्या है। शुरुआत में ऑब्जेक्ट को क्रमबद्ध करते समय 'प्लेसहोल्डर' ऑब्जेक्ट्स बनाने के लिए आपको डेटा एक्सेसर फ़ंक्शंस का उपयोग करने की आवश्यकता है, फिर बाद में सीरियलाइज्ड स्ट्रिंग को पार्स करते समय Google मानचित्र ऑब्जेक्ट्स का पुनर्निर्माण करें।

2) यह कानूनी रूप से संदिग्ध है। Google मानचित्र TOS का कहना है कि आपको डेटा को स्थायी रूप से संग्रहीत नहीं करना चाहिए और यह अन्य पदों से लगता है कि यह दृष्टिकोण इसका उल्लंघन करता है।

3) ऑब्जेक्ट बड़ा हो सकता है, एक मार्ग I serialized 64KB से अधिक था।

मैंने पथ से कुछ बिंदुओं को स्टोर करने और फिर वेपॉइंट्स का उपयोग करके इसे पुनर्निर्माण करने की कोशिश करने के बारे में भी सोचा। इस तरह के काम करता है लेकिन आप मुफ्त एपीआई के लिए केवल 8 अंक प्राप्त कर सकते हैं, इसलिए यह उन 8 अंकों से अधिक सटीकता की गारंटी नहीं देता है। इसके अलावा, यह उस मार्ग के साथ मार्ग बिंदु चिह्नकों को चित्रित करता है जो मुझे लगता है कि उपयोगकर्ता को भ्रमित कर सकता है।

क्या Google मानचित्र से सटीक मार्गों को स्टोर करने का कोई स्वीकार्य तरीका है, या एपीआई और टीओएस उद्देश्य से इसे रोकने के लिए डिज़ाइन किए गए हैं? सहायता के लिए धन्यवाद।

+2

यहां बताया गया है कि हमने इसे कैसे हल किया: मैंने "एन्कोडेड_पोलीलाइन" फ़ील्ड लिया और इसे हमारे बैकएंड पर भेज दिया। अगर मुझे बैकएंड पर बिंदुओं को संसाधित करने की आवश्यकता है, तो मैंने Google पॉलीलाइन डिकोडिंग एल्गोरिदम का एक संस्करण इस्तेमाल किया जो मैंने लाइन पर पाया और रूबी (या जो भी भाषा आप उपयोग कर रहे हैं) पर पोर्टिंग किया। यहां एक [पायथन संस्करण] है (http://code.google.com/p/py-gpolyencode/) मैंने पाया। यदि आपको फ्रंट एंड पर पॉलीलाइन प्रदर्शित करने की आवश्यकता है तो आप पॉलीलाइन को फ्रंट एंड तक भेजें और [Google ज्यामिति टूल] का उपयोग करें (https://developers.google.com/maps/documentation/javascript/3.exp/संदर्भ # एन्कोडिंग) इसे डीकोड करने के लिए। – jargetz

+1

बेशक इसका नकारात्मक पक्ष यह केवल पॉलीलाइन के रूप में मार्ग प्रदर्शित करता है, इसलिए यदि आप मार्ग बिंदु चाहते हैं, तो आपको उन्हें भी स्टोर करना होगा। और यदि आप मार्ग को संपादन योग्य बनाना चाहते हैं तो आप भाग्य से बाहर हैं, आपको केवल दिशाओं के नए सेट का अनुरोध करना होगा। – jargetz

+0

यदि आपके पास मार्गपॉइंट्स के साथ मार्कर हैं तो आप 'waypoints list' (या 'स्टार्ट'-'end' बिंदु' के साथ 'मार्कर सूची' को क्रमशः 'डेटाबेस' में अनुक्रमित कर सकते हैं और फिर उसी अनुक्रम और पास के साथ जब भी आवश्यकता हो प्रारंभ और अंत बिंदु के साथ दिशा निर्देश के लिए। यह नक्शे पर फिर से मार्ग खींच जाएगा। – bharat

उत्तर

2

मेरा मानना ​​है कि यह कानूनी रूप से संदिग्ध है। वास्तव में यह लगभग Terms of Service का उल्लंघन करता है। जैसा कि आप इंगित करते हैं, यह प्रदर्शन में सुधार के अलावा अन्य उद्देश्यों के लिए स्थायी भंडारण है (10.1.3 (बी) के विपरीत); लेकिन यह एपीआई के माध्यम से उन्हें प्राप्त किए बिना दिशानिर्देश दिखाने का भी इरादा है (10.1.1 (ए) के विपरीत)। तथ्य यह है कि Google ने इसे आसान नहीं बनाया है इसका मतलब है कि उन्होंने इस उपयोग के मामले को अधिकृत नहीं किया है। वास्तव में टीओएस और एपीआई को असंभव नहीं होने पर इस तरह के भंडारण को बनाने के लिए डिज़ाइन किया गया है।

क्या यह प्रारंभ और समाप्ति बिंदुओं को स्टोर करने के लिए स्वीकार्य नहीं होगा और जब आप इसे फिर से प्रदर्शित करना चाहते हैं तो एपीआई मार्ग से बाहर निकलने दें?

+0

आपकी प्रतिक्रिया एंड्रयू के लिए धन्यवाद। मैं आपसे सहमत हुँ। आपके द्वारा पेश किया गया समाधान ज्यादातर मामलों के लिए एक अच्छा है लेकिन हमें एक आवश्यकता थी कि हमें यह सुनिश्चित करने की आवश्यकता है कि Google मानचित्र दिशा-निर्देशों द्वारा बनाए गए मार्ग आमतौर पर इस मार्ग के पूरे जीवन में समान थे। गारंटी देने का कोई तरीका नहीं था कि एक दिन दिशा-निर्देशक द्वारा चित्रित सबसे छोटा रास्ता एक नया राजमार्ग लेगा (विशेष रूप से जब से हम चीन में परिचालन कर रहे हैं और नए राजमार्ग उभर रहे हैं)। – jargetz

+0

हम एक समाधान पर विचार कर रहे हैं जहां हम दिशा-निर्देशों से [encoded_polyline] (http://code.google.com/apis/maps/documentation/utilities/polylinealgorithm.html) संग्रहीत करते हैं, और उसके बाद इसे पेंट करने के लिए फ्रंट एंड पर भेजते हैं Google के अपने डिकोडिंग एल्गोरिदम का उपयोग करना। अगर हमें बैकएंड पर पथ को डीकोड करने की आवश्यकता है, तो हम डिकोडर के एक संस्करण का उपयोग करते हैं जिसे हमने रूबी के लिए पोर्ट किया था। हमारे पास एक कामकाजी प्रोटोटाइप है लेकिन यह इसे तैनात करने में संकोच कर रहा है क्योंकि यह कानूनी रूप से संदिग्ध है (विशेष रूप से 10.1.1 (ए) के विपरीत जैसा आपने उल्लेख किया है।) – jargetz

0

www.mapmyrun.com पर एक नज़र डालें, वे Google नक्शे एपीआई का उपयोग कर रहे हैं और वे निश्चित रूप से डेटा को जारी रखते हैं। हालांकि, इसकी संभावना नहीं है कि वे मुफ्त एपीआई का उपयोग करें।

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