सैमसंग बाडा की कार्टोग्राफिक विशेषताएं, भाग 2

कार्टोग्राफी बड़ा - जटिल से सरल तक



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

(बडा में शुरुआती लोगों के लिए मेरा पहला विषय है )



चलिए शुरू करते हैं।





विचार




विचार इस प्रकार होगा - हम प्रपत्र पर एक वास्तविक Google मानचित्र मानचित्र लोड करके और इसे मौजूदा नियंत्रण के साथ प्रदर्शित करके Bada HTTP घटकों की क्षमताओं का उपयोग करेंगे।



कार्यान्वयन




हम एक फॉर्म-आधारित एप्लिकेशन बनाएंगे, फॉर्म के हेडर फाइल पर जाएं और तुरंत फ़ाइल "FWeb.h" को शामिल करें अनुभाग में शामिल करें, जो हमें HTTP घटकों का उपयोग करने की क्षमता प्रदान करेगा। फिर, प्रपत्र वर्ग के निजी अनुभाग में, इस तरह से वेब ब्राउज़र के लिए एक लिंक घोषित करें:



Osp::Web::Controls::Web *__pWeb;
      
      







अब फॉर्म क्लास के कार्यान्वयन पर वापस जाएं और वहां नाम स्थान की घोषणा करें:



 using namespace Osp::Web::Controls;
      
      







फॉर्म कंस्ट्रक्टर में __pWeb को इनिशियलाइज़ करना न भूलें।



लगभग किया :)



यहां विधि का पता लगाएं
 OnInitializing(void)
      
      



और हम इस तरह से एक ब्राउज़र बनाएंगे कि यह फ़ॉर्म के पूरे क्लाइंट क्षेत्र (GetClientAreaBounds () विधि) पर कब्जा कर लेता है, इसे फ़ॉर्म में जोड़ें और इसमें कुछ URL लोड करें:



 __pWeb = new Web(); r = __pWeb->Construct( GetClientAreaBounds()); AddControl(*__pWeb); __pWeb->LoadUrl(L"http://www.google.com");
      
      







मनोरंजन के लिए, आप एप्लिकेशन को चला सकते हैं और देख सकते हैं कि यह कैसा दिखता है। मुझे यह पसंद है:







यहां आप अपनी html फाइल से वेज कर सकते हैं। Res प्रोजेक्ट फ़ोल्डर में, फ़ाइल test_map.html को निम्न सामग्रियों के साथ रखें (Google मैप्स एपीआई की क्षमताओं का एक सरल विवरण के लिए आप यहां संपर्क कर सकते हैं , लेखक के लिए धन्यवाद!)।



 <html> <head> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> <script type="text/javascript"> var map; function initialize() { var latlng = new google.maps.LatLng(48, 37.8); var myOptions = { zoom: 8, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP }; map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); } </script> </head> <body onload="initialize()"> <div id="map_canvas" style="width:100%; height:100%"></div> </body> </html>
      
      







और पिछली कॉल को loadUrl में बदलें ताकि यह test_map.html को इंगित करे:



 __pWeb->LoadUrl(L"/Res/test_map.html");
      
      







सिम्युलेटर चलाएं और परिणाम का आनंद लें:







इस कार्ड के साथ कुछ कैसे करें? बस :)

फॉर्म (सॉफ्टकी) में एक सॉफ्ट बटन जोड़ें - विवरण मेरे पिछले लेखों में मिल सकते हैं - और इसे क्लिक करने वाले इवेंट के लिए एक पहचानकर्ता और "श्रोता" के रूप में असाइन करें।



  SetSoftkeyActionId(SOFTKEY_0,ID_ZOOM_IN); AddSoftkeyActionListener(SOFTKEY_0,*this);
      
      







पहले, निरंतर ID_ZOOM_IN को फॉर्म वर्ग के ptotected अनुभाग में घोषित किया जाना चाहिए।



इस बटन पर क्लिक करने के लिए हैंडलर एक्शनपर्स्ड फॉर्म मेथड में होगा, जहाँ आपको एक्शनआईड पैरामीटर का विश्लेषण करना होगा। इसे इस तरह से करें:



 void FormGoogleMapBada::OnActionPerformed(const Osp::Ui::Control& source, int actionId) { switch(actionId) { case ID_ZOOM_IN: { Zoom++; __pWeb->EvaluateJavascriptN(L"map.setZoom("+Integer::ToString(Zoom)+");"); } break; default: break; } }
      
      







(और मुझे पता है, निश्चित रूप से, क्या प्रिंटफ़ प्रारूपण है :))



यहाँ केवल व्याख्या सरल है - मूल्यांकन मूल्यांकन फ़ंक्शन फ़ंक्शन जावास्क्रिप्ट की तरह ही काम करता है, स्ट्रिंग को कोड के रूप में निष्पादित करता है।



दौड़ें और देखें (तुलना के लिए, ऊपर दी गई तस्वीर देखें):







मेरी राय में, मानक एक के विपरीत, बाडा में कार्ड का उपयोग करने का एक अधिक लचीला और शक्तिशाली तरीका। भले ही एक मध्यवर्ती परत - एक वेब ब्राउज़र - यहां प्रदर्शित करने के लिए उपयोग किया जाता है, लेकिन मुझे सिम्युलेटर या स्मार्टफोन पर गति में अंतर महसूस नहीं होता है। और शांत Google मैप्स एपीआई अपने लिए बोलता है।



UPD: मैं भूल गया ... आप यहाँ उदाहरण डाउनलोड कर सकते हैं



All Articles