मुख्य सामग्री पर जाएँ
CrossFly 100% ओपन सोर्सGitHub पर फ़ॉलो करें
CrossFlyCrossFly
शुरू करें

यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।

मानचित्र

Map इंटरफ़ेस के ऊपर MapContainer (एक Component) के साथ एम्बेडेड नेटिव मानचित्र। इंजन के रूप में Google और OSM का समर्थन करता है।

⚠️ चार गड़बड़ियाँ जो बग से बचाती हैं

  1. मानचित्र बनाने से पहले key कॉन्फ़िगर करें (स्टैटिक): MapContainer.googleMapsKey = "...";.
  2. map null हो सकता है — mc.map को केवल onMapLoad के बाद ही एक्सेस करें (और null को संभालें: Web/TeaVM नेटिव मानचित्र समर्थित नहीं करता)।
  3. मानचित्र के सभी ऑपरेशन render (paint) thread पर — यदि बैकग्राउंड से आया हो तो onUI(...) के साथ लौटें।
  4. पुराना 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 (हटा दिया गया) का उपयोग करना।

यह भी देखें

क्या यह पृष्ठ उपयोगी था?