यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
मानचित्र
Map इंटरफ़ेस के ऊपर MapContainer (एक Component) के साथ एम्बेडेड नेटिव मानचित्र। इंजन के रूप में Google और
OSM का समर्थन करता है।
⚠️ चार गड़बड़ियाँ जो बग से बचाती हैं
- मानचित्र बनाने से पहले key कॉन्फ़िगर करें (स्टैटिक):
MapContainer.googleMapsKey = "...";. mapnullहो सकता है —mc.mapको केवलonMapLoadके बाद ही एक्सेस करें (औरnullको संभालें: Web/TeaVM नेटिव मानचित्र समर्थित नहीं करता)।- मानचित्र के सभी ऑपरेशन render (paint) thread पर — यदि बैकग्राउंड से आया हो तो
onUI(...)के साथ लौटें। - पुराना
phone.GoogleMaps(बाहरी व्यूअर) हटा दिया गया है।
बनाना और केंद्रित करना
MapContainer.googleMapsKey = "SUA_CHAVE";
MapContainer mc = new MapContainer(Map.MapEngine.GOOGLE, 0, () -> { // onMapLoad
if (mc.map == null) return; // Web/TeaVM: कोई नेटिव मैप नहीं
mc.map.centerOnLocation(new LatLon(-23.55, -46.63), 14);
mc.map.setMapType(Map.LayerType.NORMAL);
});
tela.add(LAY_FILL, mc);
MapEngine: GOOGLE · OSM. LayerType: NORMAL · TERRAIN · HYBRID · SATELLITE.
पिन (फ़्लुएंट API)
mc.map.add(new MapPin()
.position(-23.55, -46.63)
.title("São Paulo")
.snippet("Centro")
.draggable(false)
.onClick(p -> { Hint.show(p.title, 2000); return true; })); // true = info window को दबाता है
आकृतियाँ — MapShape.Line/Polygon/Circle
// 500 m का वृत्त (रंग ARGB 0xAARRGGBB में)
MapShape.Circle c = new MapShape.Circle(2, 0xFF2196F3, 0x402196F3);
c.setPolygon(new LatLon(-23.55, -46.63), 500.0); // केंद्र + मीटर में त्रिज्या
mc.map.add(c);
Line(thick, color) और Polygon(borderWidth, borderColor, fillColor) भी वही पैटर्न अपनाते हैं।
रूट और उपयोगिताएँ
double metros = MapUtils.distanceInMeters(new LatLon(-23.55,-46.63), new LatLon(-22.90,-43.20));
Image thumb = MapUtils.getMapImage(-23.55, -46.63, false, 13, 600, 400); // स्थिर छवि (त्रुटि/बिना key होने पर null)
वास्तविक दिशाएँ (HTTP + Jackson) DirectionsFetcher से आती हैं (कॉलबैक onRouteReady(List<LatLon>)),
जो MapRoute(lineShape, pins) के साथ संयोजित होती हैं — परिणाम को onUI(...) के साथ मार्शल करें। विवरण
अध्याय 25 में है।
सर्वोत्तम अभ्यास
- इंस्टैंशिएट करने से पहले key;
mc.mapका एक्सेस केवलonMapLoadमें। mc.map == null(Web) औरgetMapImage(...) == nullको संभालें।- मानचित्र के ऑपरेशन render thread पर; नेटवर्क के परिणाम
onUI(...)के ज़रिए।
सामान्य त्रुटियाँ
- कंस्ट्रक्टर में
mc.mapको एक्सेस करना (अभी भीnull)। MapContainer.googleMapsKeyभूल जाना।phone.GoogleMaps(हटा दिया गया) का उपयोग करना।
यह भी देखें
क्या यह पृष्ठ उपयोगी था?प्रतिक्रिया के लिए धन्यवाद!