2010-10-07 10 views
5

टैप करते समय पुशपिन जोड़ें I नवीनतम फोन 7 आरटीएम उपकरण का उपयोग कर रहा हूं (इसे आज डाउनलोड किया गया, 7 अक्टूबर 2010)।फ़ोन 7 बिंग नक्शा नियंत्रण -

मैं यहाँ एक सरल बात करने के लिए कोशिश कर रहा हूँ:

जब उपयोगकर्ता नल एक बार नक्शा नियंत्रण पर, मैं वहाँ एक पुशपिन रखना चाहते हैं। भी, मैं मानचित्र नियंत्रण के नियमित अंतर्निहित व्यवहार को रखना चाहता हूं (ज़ूम करने के लिए दो बार टैप करें)।

(यदि दोनों व्यवहारों को रखना संभव नहीं है, तो शायद पुशपिन डालने के लिए मानचित्र पर एक लंबी प्रेस हो सकती है)।

जब यह पता लगाना की कोशिश कर रहा, मैं Phone7 के लिए नियंत्रण मानचित्र में किए गए परिवर्तनों के इस दस्तावेज़ में आए: http://msdn.microsoft.com/en-us/library/ff955762.aspx

फिर मैं नया वर्ग MapInputEventArgs है, जो एक ViewportPoint सदस्य है देखा।

जब नियमित SilverLight नक्शा नियंत्रण पर कोड उदाहरण को देखकर मैं इस तरह देखा:

private void OnMouseClick(object sender, MapMouseEventArgs e) 
    { 
     Point clickLocation = e.ViewportPoint; 
     Location location = x_Map.ViewportPointToLocation(clickLocation); 

     Pushpin pushpin = new Pushpin(); 
     m_PushpinLayer.AddChild(pushpin, new Location(latitude, longitude)); 
    } 

लेकिन Phone7 मामले में, मैं उचित ईवेंट हैंडलर नहीं मिल रहा है, और मैं नहीं मिल सका जो मानचित्र नियंत्रण में MapInputEventArgs का उपयोग करता है। Google पर इसे खोजना मुझे केवल 1 परिणाम प्राप्त करता है !!

तो, "एक बार टैप करें" के लिए उचित घटना कहां है, और इस घटना को निकाल दिए जाने के बाद मैं व्यूपोर्टपॉइंट कैसे प्राप्त कर सकता हूं?

अग्रिम धन्यवाद।

उत्तर

6

बस इस लगा बाहर अगर आप अभी भी समस्या हो रही है।

MouseLeftButtonUp और MouseLeftButtonDown घटनाक्रम एक GetPosition विधि उस बिंदु अपने देख वापस आ जाएगी लिए

private void MapMain_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) 
    { 

     Point p = e.GetPosition(this.MapMain); 
     GeoCoordinate geo = new GeoCoordinate(); 
     geo = MapMain.ViewportPointToLocation(p); 
     MapMain.ZoomLevel = 17; 
     MapMain.Center = geo; 
     //---create a new pushpin--- 
     Pushpin pin = new Pushpin(); 

     //---set the location for the pushpin--- 
     pin.Location = geo; 

     //---add the pushpin to the map--- 
     MapMain.Children.Add(pin); 
    } 
1

ठीक है, यह सुंदर नहीं है, लेकिन मुझे एक ही समस्या है और मैं एक प्रकार के कामकाज के साथ आया हूं जब आप स्क्रीन से अपनी अंगुलियों को छोड़ देते हैं।

  bool noPin = false; 

मैं तो इस का उपयोग निर्धारित करने के लिए ज़ूम या पैन उपयोगकर्ता द्वारा किया जा रहा है (MouseLeftButtonDown और MouseLeftButtonUp घटनाओं के बीच इन आग): मैं एक बूलियन का दृष्टांत। ऊपर की घटना पर, मैं जांचता हूं कि उपयोगकर्ता ज़ूमिंग या पैनिंग कर रहा था या नहीं, और यदि नहीं, तो मेरा पुशपिन रखें।

private void mHome_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
    { 
     noPin = false; 
    } 

    private void mHome_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) 
    { 
     if (!noPin) 
      PlacePushPin(); 
    } 

    private void mHome_MapPan(object sender, MapDragEventArgs e) 
    { 
     tbTemp.Text += "pan"; 
    } 

    private void mHome_MapZoom(object sender, MapZoomEventArgs e) 
    { 
     tbTemp.Text += "zoom"; 
    } 

यह सुंदर नहीं है, लेकिन, यह सबसे अच्छा था जिसे मैं प्रबंधित कर सकता था।

+0

धन्यवाद है! यह वास्तव में एक अच्छा कामकाज की तरह दिखता है। मैं इसे आजमाऊंगा। –

+0

मुझे लगता है कि ऑनहोल्ड इवेंट – Mahantesh

3

जब तक मैं आपके सवाल का गलत पढ़ रहा हूँ, तो यह आपके लिए क्या चाहिए, तो लगता है:

Silverlight - Add Pushpin to Bing Maps via C#

+0

में पिन जोड़ने के लिए बेहतर लगता है WP7 में उपयोग किया जाने वाला बिंग मानचित्र नियंत्रण सिल्वरलाइट नियंत्रण से थोड़ा अलग है।उदाहरण के लिए, WP7 नियंत्रण में माउसक्लिक ईवेंट नहीं है और पुष्पिन में माउसइंटर और माउसलेव ईवेंट नहीं हैं। –

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