2013-01-17 56 views
5

क्या ओएसएमड्रॉइड मैप व्यू ओवरले में खींचे गए पॉलीगॉन में इवेंट लिस्टनर सेट करना संभव है? मैं ओवरले पर प्रिंट करना चाहता हूं और इसे छूने के बाद मैं अपने रंग को बदलना चाहता हूं या पॉलीगॉन के पीछे डेटा को संभालना चाहता हूं।MapView पर पॉलीगॉन कैसे आकर्षित करें, इसे भरें, और उस पर एक टच इवेंट डालें

उदाहरण के लिए:

poly1: आईडी = 1337, पी 1 (0,0), P2 (1,0), ......, Pn (0,0)

poly2: आईडी = 42, पी 1 (10,7), पी 2 (18,39), ......, पीएन (10,7)

पॉली 1 में छूने के बाद मैं जानना चाहता हूं कि एहा आईडी 1337 दबाया गया है। एक रंग बदलना चाहता हूँ।

मैं इस तरह के व्यवहार को कैसे कार्यान्वित कर सकता हूं? बहुभुज

उपयोग this करने के लिए नक्शे के लिए सुनने आकर्षित करने के लिए

+0

आप मानचित्र पर आहरण पॉलीलाइन के लिए लिंक नीचे का पालन कर सकते हैं। https://stackoverflow.com/questions/39454857/how-to-buffer-a-polyline-in-android-or-draw-a-polygon-around-a-polyline/42664925#42664925 –

उत्तर

0

उपयोग this प्रलेखन क्लिक करता है तो एक स्पर्श बहुभुज में से एक के अंदर है

मैं सुनिश्चित नहीं हूं

उपयोग this निर्धारित करने के लिए वह ज्यामिति लाइब्रेरी एंड्रॉइड पर चल सकती है, इसलिए तीसरे घटक को प्रतिस्थापित करने के लिए स्वतंत्र महसूस करें।

संपादित:

Misread प्रश्न और गूगल मैप्स के साथ जुड़े, क्षमा करें।

+0

क्षमा करें, मैं साथ काम कर रहा हूं osmdroid, आप Google एपीआई के साथ आते हैं। मैंने पहले ही पॉलीगॉन खींचा है, और मुझे पता है कि ऑन टच इवेंट की स्थिति कैसे प्राप्त करें। यह निर्धारित करने का एकमात्र तरीका है कि स्पर्श ज्यामिति libarys का उपयोग कर बहुभुज में था या नहीं? मुझे आशा थी कि कैनवास शायद अपने चित्रों को जानता हो, एक ड्राइंग पर एक क्लिक निर्धारित कर सकता है :(मामला नहीं? –

+0

ओह, क्षमा करें ... ओएसएमड्रॉइड चीज़ों को अनदेखा कर दिया। बिंदु यह है कि नक्शा पुस्तकालय सिर्फ यही है, उनके दायरे में शामिल नहीं है ज्यामिति सीधे/एक सुविधा के रूप में, हाँ, आपको इसे किसी भी तरह से प्रदान करना होगा। हालांकि, आपकी मानचित्र लाइब्रेरी के लिए प्रलेखन की जांच करना अभी भी उचित है। – Machinarius

+0

ठीक है, मैं जेटीएस में एक नज़र डालेगा और पॉलीगॉन को छुआ जाने के लिए इसका उपयोग करूंगा। मुझे लगता है कि मैं अपनी समस्या का समाधान करूंगा :) धन्यवाद –

0

यहाँ आकर्षित और एक बहुभुज (आयत उदाहरण) को भरने के लिए कैसे:

ArrayList bgRectPoints = नए ArrayList <>();

GeoPoint pt1 = new GeoPoint(-15.953548, 126.036911); 
    bgRectPoints.add(pt1); 
    GeoPoint pt2 = pt1.destinationPoint(10000, 0); 
    bgRectPoints.add(pt2); 
    GeoPoint pt3 = pt2.destinationPoint(10000, 90); 
    bgRectPoints.add(pt3); 
    GeoPoint pt4 = pt3.destinationPoint(10000, 180); 
    bgRectPoints.add(pt4); 
    bgRectPoints.add(pt1); 

    Polygon polygon = new Polygon(); 
    polygon.setPoints(bgRectPoints); 
    polygon.setFillColor(Color.BLACK); 

    mapView.getOverlays().add(polygon); 

प्राप्त करने के लिए इस तरह बहुभुज प्रारंभ स्पर्श/नल:

Polygon polygon = new Polygon(){ 
     @Override 
     public boolean onSingleTapConfirmed(MotionEvent event, MapView mapView) { 
      Toast.makeText(context, "Polygon clicked!",Toast.LENGTH_SHORT).show(); 
      return super.onSingleTapConfirmed(event, mapView); 
     } 
    }; 

अधिक पाया जा सकता है here