यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
LocationPicker
LocationPicker GPS ट्रैकिंग और खींचने योग्य पिन के साथ मानचित्र पर एक भौगोलिक निर्देशांक का चयन करता है। यह पिकर पैटर्न का पालन करता है (देखें Picker) और एक LatLon लौटाता है।
🔴 · पैकेज:
dev.crossfly.ui.picker· एक्सटेंड करता है:Picker· हार्डवेयर: GPS + मानचित्र
कब उपयोग करें
- मानचित्र पर एक स्थान एकत्र करना (डिलीवरी पता, रुचि का बिंदु)।
दिखावट
गोल बटनों वाली शीर्ष पट्टी (मानचित्र प्रकार Normal/Satélite, बैक, पुष्टि), बॉडी को घेरता मानचित्र (FILL), परिशुद्धता वृत्त (PDOP के अनुसार हरा/लाल) वाला खींचने योग्य पिन और नीचे एक स्टेटस लेबल।
पूरा उदाहरण (कॉपी करें, पेस्ट करें और चलाएं)
LocationPicker एक पूर्ण-स्क्रीन मानचित्र खोलता है — इसे किसी Button से ट्रिगर करें। उदाहरण बुनियादी उपयोग का पुनः उपयोग करता है और पुष्ट निर्देशांक को एक Label में दिखाता है। LatLon dev.crossfly.map से आता है।
package com.exemplo;
import dev.crossfly.map.LatLon;
import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
import dev.crossfly.ui.picker.*;
/** चलाने योग्य मुख्य स्क्रीन। launcher (classname) की ओर संकेत करें और चलाएँ: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
@Override
public void onShow() throws Exception
{
super.onShow();
setLayout(new VerticalLayout());
Label saida = new Label("Nenhuma coordenada");
add(LAY_AUTO, saida);
Button escolher = new Button("Escolher local no mapa")
.onAction(c ->
{
LocationPicker lp = new LocationPicker(
coord -> {}, // construtor का onCapture (वैकल्पिक; null हो सकता है)
10.0, // minPdop
true, // पिन को खींच सकते हैं
true, // उच्च परिशुद्धता
false); // बिना street view
lp.show(answer ->
{
LatLon ll = (LatLon) answer;
if (ll != null)
saida.setText("Local: " + ll.lat + ", " + ll.lon);
});
});
add(LAY_AUTO, escolher);
}
}
नीचे दिए गए स्निपेट केवल मुख्य भाग दिखाते हैं (जो
onShow()के अंदर जाता है)। चलाने के लिए, उन्हें ऊपर केMainWindowढांचे में रखें।
बुनियादी उपयोग
LocationPicker lp = new LocationPicker(
coord -> Debug.log("Capturado: " + coord.lat + "," + coord.lon),
10.0, // minPdop
true, // पिन को खींच सकते हैं
true, // उच्च परिशुद्धता
false); // बिना street view
lp.show(answer ->
{
LatLon ll = (LatLon) answer;
salvarLocal(ll.lat, ll.lon);
});
कंस्ट्रक्टर
| कंस्ट्रक्टर | विवरण |
|---|---|
LocationPicker(RunnableWith<LatLon> onCapture, double minPdop, boolean canDragPin, boolean highPrecision, boolean streetview) |
नीचे पैरामीटर देखें। |
| पैरामीटर | प्रकार | क्या करता है |
|---|---|---|
onCapture |
RunnableWith<LatLon> |
पुष्टि पर LatLon के साथ कॉलबैक (null हो सकता है)। |
minPdop |
double |
अधिकतम स्वीकार्य PDOP; इसके प्राप्त होने तक पुष्टि छिपी रहती है। |
canDragPin |
boolean |
पिन को मैन्युअल स्थान पर खींचने की अनुमति देता है। |
highPrecision |
boolean |
उच्च-परिशुद्धता GPS चालू करता है। |
streetview |
boolean |
मानचित्र पर street view सक्षम करता है। |
कॉलबैक और इवेंट
| कॉलबैक | कब ट्रिगर होता है |
|---|---|
onCapture (कंस्ट्रक्टर) |
पुष्टि पर, LatLon के साथ (यदि != null)। |
show(onAnswer) |
बंद होने पर, पुष्ट LatLon सौंपता है। |
getAnswer() पुष्ट LatLon लौटाता है, या रद्द होने पर null। परिणाम के लिए दो रास्ते हैं (कंस्ट्रक्टर का onCapture और show का onAnswer) — दोनों केवल तभी ट्रिगर होते हैं जब answer != null।
स्थितियां
- पिन खींचने से GPS बंद हो जाता है (
canUpdateGPS = false), “Custom Location” चिह्नित होता है और पुष्टि दिखती है। - पुष्टि बटन केवल तब दिखता है जब परिशुद्धता स्वीकार्य होती है (या डेस्कटॉप पर, या मैन्युअल खींचने के बाद)।
- संसाधन (GPS थ्रेड,
Location, मानचित्र) बंद होने पर केवल एक बार मुक्त किए जाते हैं।
सर्वोत्तम अभ्यास
- एक यथार्थवादी
minPdopचुनें; मोबाइल पर GPS द्वारा इसे प्राप्त करने तक पुष्टि छिपी रहती है। hide()के बाद इंस्टैंस का पुनः उपयोग न करें — GPS/मानचित्र संसाधन मुक्त हो जाते हैं।
सामान्य गलतियां
- पुष्टि कभी न दिखना — GPS ने
minPdopप्राप्त नहीं किया और उपयोगकर्ता ने पिन नहीं खींचा (डेस्कटॉप पर यह तुरंत दिखता है)। - रद्द करने पर
onAnswerकी उम्मीद करना — यह ट्रिगर नहीं होता (answer = null)।