यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
उपयोगकर्ता को मानचित्र पर स्थान चुनने कैसे दें
उद्देश्य। उपयोगकर्ता को एक स्थिति की पुष्टि करने के लिए खींचने योग्य पिन और GPS ट्रैकिंग वाला
मानचित्र (Google) स्क्रीन खोलना। परिणाम एक LatLon है जो callback के माध्यम से मिलता है।
उपयोग की गई APIs
LocationPicker(RunnableWith<LatLon> onCapture, double minPdop, boolean canDragPin, boolean highPrecision, boolean streetview)— पूर्ण कंस्ट्रक्टर (यह स्रोत का वास्तविक हस्ताक्षर है)।onCapture— पुष्टि किए गएLatLonके साथ कॉल किया जाने वाला callback (nullहो सकता है)।minPdop— न्यूनतम स्वीकार्य PDOP; पुष्टि बटन तब तक छिपा रहता है जब तक fix उस परिशुद्धता तक न पहुँच जाए (डेस्कटॉप पर यह हमेशा सक्षम रहता है)।canDragPin— पिन को किसी कस्टम स्थिति तक खींचने की अनुमति देने के लिएtrue।highPrecision— उच्च परिशुद्धता वाले GPS के लिएtrue।streetview— मानचित्र में street view सक्षम करने के लिएtrue।
LatLon getAnswer()— पुष्टि की गई स्थिति, या रद्द होने परnull।- कॉन्फ़िगर करने योग्य स्टैटिक्स:
LocationPicker.defaultZoom,Instrucoes,GpsLocation,CustomLocation,Precision,Meters।
अनुरोध के विवरण से भिन्नता।
LocationPickerपरिणाम के लिएshow(onAnswer)का उपयोग नहीं करता: निर्देशांक कंस्ट्रक्टर में पास किए गएRunnableWith<LatLon> onCaptureके माध्यम से आता है (औरgetAnswer()में भी रहता है)।onCaptureकेवल तभी कॉल होता है जब उपयोगकर्ता किसी गैर-null स्थिति के साथ पुष्टि करता है। आंतरिक रूप से picker अपना स्वयं काGPSThread(आंतरिक क्लास) चलाता है और अपडेट को पहले से हीComponent.onUI(...)के माध्यम से भेजता है, इसलिए आपका callback paint thread पर निष्पादित होता है।
पूर्ण उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)
package com.exemplo;
import dev.crossfly.ui.*; // Window, Button, Label
import dev.crossfly.ui.layout.*; // VerticalLayout
import dev.crossfly.ui.picker.*; // LocationPicker
import dev.crossfly.map.*; // LatLon
import dev.crossfly.util.*; // RunnableWith
/** चलाने योग्य मुख्य स्क्रीन। launcher (classname) की ओर संकेत करें और चलाएँ: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
@Override
public void onShow() throws Exception
{
super.onShow();
setLayout(new VerticalLayout());
Label resultado = new Label("");
add(LAY_AUTO, resultado);
Button acao = new Button("Escolher no mapa");
acao.onAction(c ->
{
RunnableWith<LatLon> aoConfirmar = coord ->
{
// पहले से ही paint thread पर आता है (picker आंतरिक रूप से Component.onUI का उपयोग करता है)
resultado.setText("Lat " + coord.lat + " / Lon " + coord.lon);
};
LocationPicker picker = new LocationPicker(
aoConfirmar, // पुष्टि किए गए LatLon के साथ callback
30.0, // minPdop: सटीकता <= 30m होने पर पुष्टि करने की अनुमति देता है
true, // canDragPin: उपयोगकर्ता pin को खींच सकता है
true, // highPrecision
false); // streetview
picker.show();
});
add(LAY_AUTO, acao);
}
}
नीचे का अंश केवल मुख्य भाग दिखाता है। चलाने के लिए, इसे ऊपर दिए गए
MainWindowढाँचे में रखें।
न्यूनतम अंश
// स्रोत में सत्यापित: LocationPicker.java (constructor पंक्तियाँ 129-141, onCapture/closeWith, getAnswer)
import dev.crossfly.ui.picker.*; // LocationPicker
import dev.crossfly.map.*; // LatLon
import dev.crossfly.util.*; // RunnableWith
RunnableWith<LatLon> aoConfirmar = coord -> {
// पहले से ही paint thread पर आता है (picker आंतरिक रूप से Component.onUI का उपयोग करता है)
double lat = coord.lat, lon = coord.lon;
salvarLocal(lat, lon);
};
LocationPicker picker = new LocationPicker(
aoConfirmar, // पुष्टि किए गए LatLon के साथ callback
30.0, // minPdop: सटीकता <= 30m होने पर पुष्टि करने की अनुमति देता है
true, // canDragPin: उपयोगकर्ता pin को खींच सकता है
true, // highPrecision
false); // streetview
picker.show();
// विकल्प: बाद में getAnswer() के ज़रिए परिणाम पढ़ें (रद्द होने पर null)
और गहराई में जाएँ
- स्थान गाइड: Location & GPS · Widget: LocationPicker
- संबंधित रेसिपी: obter-gps.md