2008-09-17 17 views
13

मैं WPF में एक साधारण मानचित्र नियंत्रण बनाने के बारे में सोच रहा हूं, और मूल मानचित्र इंटरफ़ेस के डिज़ाइन के बारे में सोच रहा हूं और सोच रहा हूं कि किसी के पास इसके लिए कुछ अच्छी सलाह है या नहीं।एक WPF मानचित्र नियंत्रण

मैं जो सोच रहा हूं वह स्क्रॉलव्यूयर (सैन्स स्क्रॉल बार) का उपयोग मेरे "व्यू पोर्ट" के रूप में कर रहा है और फिर कैनवास के शीर्ष पर सब कुछ ढेर कर रहा है। से जेड सूचकांक = 0 अप, मैं सोच रहा हूँ: अक्षांश/देशांतर गणना, नियंत्रण स्थिति, जेड सूचकांक स्टैकिंग के लिए

  1. बेस कैनवास।
  2. विभिन्न ज़ूम स्तरों पर नक्शे का प्रतिनिधित्व करने के लिए एकाधिक ग्रिड तत्व। टाइलिंग आसान बनाने के लिए एक ग्रिड का उपयोग करना।
  3. स्थितित्मक डेटा के साथ मानचित्र वस्तुओं।
  4. मानचित्र नियंत्रण (ज़ूम स्लाइडर, सिंहावलोकन, आदि)।
  5. पैनिंग और ज़ूमिंग के लिए माउस चाल ईवेंट के साथ स्क्रॉल व्यूअर।

कोई टिप्पणी सुझाव कि मुझे इसे कैसे बनाना चाहिए?

उत्तर

0

मुख्य प्रश्न यह है कि आप मानचित्र में जो आइटम डालने जा रहे हैं उन्हें संग्रहीत और एक्सेस करते हैं (मान लीजिए कि यह सिर्फ एक चित्र प्रदर्शन नहीं है)। कुछ विचारों के लिए लुकअप दृश्यग्राफ।

इसके अलावा, आप यह एक खिलौना छवि दर्शक XY स्केलिंग के लिए अक्षांश देशांतर 'दिलचस्प' प्राप्त कर सकते हैं और अधिक से अधिक होना चाहते हैं

1

एक WPF मानचित्रण उपकरण बनाने के लिए अपनी इच्छा की खान है, जो मुझे नेतृत्व पूछने के लिए के समान है Silverlight से DeepZoom (उर्फ मल्टीस्केले इमेज) के बारे में this question। मुझे एक डब्ल्यूपीएफ संस्करण चाहिए। स्वीकार्य उत्तर एक बहुत अच्छे प्रारंभिक बिंदु (आपके वर्णित विचार प्रक्रिया के समान) के लिए एक लिंक प्रदान करता है।

8

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

मैंने व्यक्तिगत रूप से एक सी # 2.0 एप्लिकेशन में शारपैप का उपयोग किया है जो वास्तविक समय जीपीएस डेटा के साथ जीआईएस डेटा संयुक्त करता है, और यह बहुत सफल था। शार्पमैप ने जीआईएस डेटा को बदलने के साथ काम करने के लिए गणितीय नींव के साथ जीआईएस डेटा को संभालने के लिए ट्रांसफॉर्मेशन सूट प्रदान किया। यह एक WPF फ्रंटएंड के साथ गैर-प्रतिपादन कोड का उपयोग करने के लिए अपेक्षाकृत सरल होना चाहिए, क्योंकि उनके पास पहले से ही डेटा से अलग प्रस्तुति है।

(संपादित करें: के बारे में मैं कैसे SharpMap इस्तेमाल किया और अधिक जानकारी के लिए जोड़ा)

+1

मैंने SharpMap पर एक नज़र डाली, लेकिन दुर्भाग्य से यह अभी तक हमारी तैनाती के लिए उत्पादन के लिए तैयार नहीं है। यह कुछ ESRI आकार फ़ाइलों को लोड करने में असमर्थ था, जो कुछ हम काफी भारी उपयोग करते हैं। – Dylan

1

वर्चुअल अर्थ है कुछ पक्ष WPF को

+0

दुर्भाग्यवश यह मेरे लिए काम नहीं करेगा क्योंकि यह एक एम्बेडेड वेब होस्ट का उपयोग करता है, और मुझे आंशिक-ट्रस्ट में एक्सबीएपी में काम करने की आवश्यकता है। जो, जब तक कि मैं इसे गलत बना रहा हूं, काम नहीं करेगा। – Dylan

5

यह शायद इसके बारे में जाने का एक राउंडअबाउट रास्ता है, लेकिन आप कुछ उपयोगी लग सकते SilverlightEarth.com से जावास्क्रिप्ट और एक्सएएमएल में सामान जो सिल्वरलाइट 1.0-आधारित मानचित्र-टाइल-क्लाइंट। यह वीई, Google, याहू लोड कर सकता है (DeepZoom version है जो OpenStreetMap, चंद्रमा और मंगल भी लोड कर सकता है, लेकिन चूंकि यह एमएसआई का उपयोग करता है, यह वास्तव में डब्ल्यूपीएफ 3/3.5 फ्रंट पर मदद नहीं करता है)।

हालांकि जावास्क्रिप्ट थोड़ा अस्पष्ट है, लेकिन आप स्पष्ट रूप से देख सकते हैं कि यह सिल्वरलाइट 1.0 एक्सएमएल (गतिशील रूप से आकार) कैनवास बना रहा है, इसे टाइल्स (छवि नियंत्रण) से भरना और ज़ूम इन/आउट और पैन अनुरोधों को संभालना है। आपको सभी जावास्क्रिप्ट को समझने और इसे सी # में बदलने की आवश्यकता होगी - एक्सएएमएल को ज्यादातर डब्ल्यूपीएफ में बदलना चाहिए।मेरे पास tested this Silverlight 1.0 with a Deep Zoom tile pyramid (और here) इसलिए अवधारणाएं लागू हैं (यानी न केवल नक्शे के लिए)।

मुझे यह काम पता है क्योंकि मैंने इसे Geoquery2008.com (screenshot) में मानचित्र दर्शक बनाने के लिए स्वयं किया है जो WPF/C# है। दुर्भाग्य से Geoquery2008 असेंबली obfuscated हैं, लेकिन आप अभी भी कुछ विचार या उपयोगी कोड डीएएसएम/परावर्तक के माध्यम से मिल सकता है। यह अभी भी एक बीटा है इसलिए मैं दावा नहीं करता कि यह 100% किया गया है। मैंने वास्तव में नक्शा कोड को एक अलग नियंत्रण में फैक्टर करने का विचार नहीं किया था, लेकिन अगर मैं कोई अन्य दिखाई नहीं देता तो मैं इसे देख सकता हूं ...

संयोग से मैंने स्क्रॉलव्यूअर के साथ भी शुरुआत की, लेकिन मैं योजना बना रहा हूं इसे हटा दें और जावास्क्रिप्ट को अधिक बारीकी से नकल करें ताकि पनिंग/ज़ूमिंग (स्क्रॉलव्यूवर प्रदान करने की प्रक्रिया से अधिक नियंत्रण प्राप्त करके) छवि वस्तुओं को दोबारा उपयोग करना आसान हो।

Virtual Earth tile system और Deep Zoom file format पर ये एमएसडीएन पृष्ठ और संबंधित लिंक शायद एक उपयोगी संदर्भ भी है।

अंत में - मुझे लगता है कि आपने इस पोस्ट के बाद से देखा है कि दीपज़ूम/मल्टीस्केल इमेज .NET 4.0/Studio 2010 में होने की संभावना है।

1

पता नहीं है कि आप ESRI सॉफ़्टवेयर का उपयोग करते हैं, लेकिन मैंने वहां सिल्वरलाइट एपीआई विकसित करने के लिए वहां स्टैक किया है ताकि आप इसे रोकना चाहें।

1

यह मेरे काम के क्षेत्र में बिल्कुल नहीं गिरता है, लेकिन आप MapWindow GIS पर एक नज़र डाल सकते हैं, जिसमें ओपन सोर्स एक्टिवैक्स ऑब्जेक्ट है जो बहुत सारे मैपिंग और जीआईएस फीचर्स प्रदान करता है। यहाँ एक पोस्ट समझा WPF अनुप्रयोगों पर एम्बेड करने के लिए कैसे है:

http://www.mapwindow.org/phorum/read.php?13,13484

0

WPF में सबसे अच्छा नक्शा नियंत्रण Bing Maps Windows Presentation Foundation Control v1 है ।

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

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