के लिए ऑनड्रागलिस्टर बनाना, मैं एक Google मानचित्र खंड के लिए ऑन-ड्रैग श्रोता सेट अप करने का प्रयास कर रहा हूं, लेकिन ड्रैग ईवेंट को आग में नहीं मिल सकता। चूंकि नक्शा सीधे ड्रैग इवेंट्स का समर्थन नहीं करता है, इसलिए मैं व्यू के लिए ड्रैग श्रोता को लागू करने की कोशिश कर रहा हूं। मैं मार्कर ड्रैग घटना के बारे में जानता हूं, लेकिन यह मुझे अच्छा नहीं करता क्योंकि मैं मार्करों को चारों ओर स्थानांतरित करने की कोशिश नहीं कर रहा हूं।Google मानचित्र v2 फ्रैगमेंट
नक्शे खींचें घटनाओं को फँसाने के लिए कारण दोहरा है:
पहले यदि उपयोगकर्ता नक्शा ने उसे नकार दिया गया है पता लगाने के लिए। यदि वे नहीं हैं, तो मैं स्क्रीन पर अपना स्थान रखना चाहता हूं, और मानचित्र पर नहीं होने पर उनके स्थान पर एनिमेट करना चाहता हूं। अगर उन्होंने मानचित्र पर पैन किया है, तो मुझे लगता है कि वे जानते हैं कि वे क्या देखना चाहते हैं और स्क्रीन पर स्थान को मजबूर करना चाहते हैं। (ऐसा लगता है कि एपीआई में शामिल होना चाहिए)
फँसाने का दूसरा कारण उपयोगकर्ताओं को मानचित्र पर रेखाएं और बहुभुज आकर्षित करने की अनुमति देना है। मैं इसे ऑनट घटनाओं (अंक जोड़कर) के साथ कर सकता हूं, लेकिन मैं उन्हें इसे मुक्त करने में भी सक्षम होना चाहता हूं।
मेरे कोड इस तरह दिखता है:
MainActivity:
mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
setUpMapIfNeeded();
mMapView = findViewById(R.id.map);
myMapDragListener = new MapDragListener();
mMapView.setOnDragListener(myMapDragListener);
श्रोता:
public class MapDragListener implements OnDragListener {
/**
*
*/
public MapDragListener() {
super();
say.logCat("MapDragListener: I'm ALIVE!!!!");
}
private AkamaiAnnounce say = new AkamaiAnnounce();
private boolean inDrag;
private boolean hasPanned=false;
@Override
public boolean onDrag(View v, DragEvent event) {
say.logCat("MapDragListener.onDrag: " + event.toString());
//String dotTAG = (String) getTag();
if (event.getLocalState() != this) {
return false;
}
boolean myResult = true;
int action = event.getAction();
float x = event.getX();
float y = event.getY();
switch (action) {
case DragEvent.ACTION_DRAG_STARTED:
inDrag = true;
break;
case DragEvent.ACTION_DRAG_LOCATION:
break;
case DragEvent.ACTION_DRAG_ENTERED:
break;
case DragEvent.ACTION_DRAG_EXITED:
break;
case DragEvent.ACTION_DROP:
myResult = false;
break;
case DragEvent.ACTION_DRAG_ENDED:
inDrag = false; // change color of original dot back
hasPanned=true;
break;
default:
myResult = false;
break;
}
return false;
//return myResult;
}
public boolean hasPanned() {
return hasPanned;
}
public void setHasPanned(boolean hasPanned) {
this.hasPanned = hasPanned;
}
}
नक्शा ठीक काम करता है। श्रोता तत्काल, लेकिन मेरी ऑनड्रैग घटना कभी नहीं आग लगती है। कोई विचार?
अगर नक्शा गंदा था बताने के लिए अगर आप खींच मार्कर के बारे में बात कर रहे हैं समान की तरह कुछ किया था, V2 निश्चित रूप से खींचें श्रोताओं करता है। 'लागू करें OnMarkerDragListener' – tyczj
@tyczj यह मार्कर खींचने के बारे में नहीं है, बल्कि पूरे मानचित्र को पैनिंग करने के बारे में नहीं है। टिम: यह काम नहीं करेगा क्योंकि नक्शा घटनाओं का उपभोग करता है। अपना प्रश्न अपडेट करें, कहें कि आप क्या हासिल करना चाहते हैं और शायद हम समाधान ढूंढ सकते हैं। –