powermap_sdk 0.14.0 copy "powermap_sdk: ^0.14.0" to clipboard
powermap_sdk: ^0.14.0 copied to clipboard

A comprehensive Flutter SDK for PowerMap, offering location plotting, geometry measurements, layer management, routing, search, and tracking.

0.14.0 #

Parallel Frontage Road Rerouting & Traveled Route Fixes #

  • New: Parallel Frontage Road Detection: Detects vehicles deviating from the main road corridor onto a parallel frontage road / frontage service lanes (10m - 35m lateral gap) moving parallel (diff <= 35°) for >= 3.0 seconds at speed > 10 km/h (2.7 m/s), immediately recalculating route (_performReroute) instead of being trapped on the main highway route.
  • Fix: Sigmoid Confidence Snap: Refined NavigationMathUtils.computeConfidence() midpoint from 15.0m to 9.0m (and steepness 0.35) so that lateral movement beyond 10m releases the snap-to-road magnet, allowing the vehicle marker to accurately track the frontage road without being falsely pulled back to the main highway.
  • Fix: Traveled Route Persistence: Fixed an issue where the traveled route on the main road stopped updating and failed to turn gray when veering off-route or onto a parallel frontage road. _updateTraveledRoute() now ensures the path already traveled on the main road remains properly painted in gray (#546E7A).
  • Update: Adjusted off-route connector line threshold from 15m to 10m to trigger sooner on frontage road deviations.

Voice Guidance (TTS) & Thai Pronunciation Improvements #

  • Fix: Distance Speech Formatting: For distance announcements >= 1000m, values near major milestones (~1km / ~2km) are cleanly rounded to whole numbers (e.g. "อีก 1 กิโลเมตร", "อีก 2 กิโลเมตร"). Trailing .0 decimals are stripped to prevent unnatural speech like "อีก 1.1 1.0 กม.". Meters (< 1000m) remain cleanly rounded to 50m intervals (e.g. "800 เมตร", "500 เมตร", "200 เมตร").
  • Fix: Duplicate "ต่อไปยัง ไปยัง": Fixed phrasing in NavigationTextFormatter when the verb ends with "ไปยัง" or is "ต่อไปยัง", eliminating redundant repetition (e.g. "ต่อไปยัง ถนนพหลโยธิน" instead of "ต่อไปยัง ไปยัง ถนนพหลโยธิน").
  • New: Global Abbreviation Expansion: TtsPronunciation now expands street abbreviations globally across all TTS output: ถ. → ถนน, ซ. → ซอย, กม. → กิโลเมตร, จ. → จังหวัด, ทล. → ทางหลวง, ทช. → ทางหลวงชนบท, preventing TTS from spelling them out as abbreviations (e.g. "ถอ จุด", "ซอ จุด").
  • New: Digit-by-Digit Spoken Thai for Road Numbers: Road numbers (e.g. ถนนหมายเลข 347, อย. 2000, ทล. 32) now convert numbers to explicit Thai words (e.g. 2000 → "สอง ศูนย์ ศูนย์ ศูนย์", 347 → "สาม สี่ เจ็ด"), preventing iOS TTS from misreading road numbers as cardinal quantities like "สองพัน".
  • New: Provincial Rural Road Codes: Mapped rural road provincial codes in TtsPronunciation (อย. → "ออ ยอ", นบ. → "นอ บอ", ปท. → "ปอ ทอ", นม. → "นอ มอ", ชบ. → "ชอ บอ", etc.), preventing iOS from misinterpreting "อย." as "อาหารและยา".

0.13.8 #

Destination Guidance & Arrival Detection #

  • New: Post-Turn Continuity: When completing the last turn leading to the destination, the system now immediately announces the remaining distance to the destination (e.g. "ตรงไปอีก 150 เมตร จะถึงจุดหมายปลายทาง" / "Continue for 150 meters to your destination"), preventing silent gaps after turns.
  • New: Compound Destination Turns: Turns within 60m of the destination are now automatically merged into a single proactive instruction (e.g. "เลี้ยวซ้าย แล้วจะถึงจุดหมายปลายทาง" / "Turn left, and you will arrive at your destination"), including destination side indications (left/right).
  • New: Unified Destination Guidance: Destination approach stages (advance ~200m/500m/1km, preparation ~35-50m "ใกล้ถึงจุดหมายปลายทางแล้ว", and arrival "คุณถึงจุดหมายปลายทางแล้ว") are now fully coordinated inside VoiceGuidanceScheduler. Removed redundant legacy distance announcements to eliminate audio overlap and mid-sentence cut-offs.
  • Fix: Arrival Detection & "ถึงบ้างไม่บอกบ้าง":
    • Replaced strict segsFromEnd <= 2 gate with direct spatial arrival distance (effectiveDistToDest <= 35m or totalRemaining <= 35m), ensuring arrival triggers reliably on curves, complex intersections, and dense route geometry.
    • Multi-tiered arrival detection: immediate pass-by (< 20m), slow speed / pulling in (< 28m at < 15 km/h), and dwell/parking (< 35m at < 7 km/h with 1.5s jitter filter).
    • Relaxed GPS accuracy threshold to 40m within 60m of the destination to prevent low-speed parking fixes from being dropped near buildings.
    • Suppressed off-route rerouting in the arrival zone (< 35m) so pulling into parking lots or driveways correctly triggers arrival instead of recalculating route.
  • Fix: _speakUrgent() no longer wipes scheduler stage locks (resetScheduler: false by default), preventing TTS state loss during distance/system announcements.

0.13.7 #

  • Fix: Fixed an issue where the rerouting voice announcement ("ระบบกำลังคำนวณเส้นทางใหม่...") would get cut off prematurely mid-sentence due to step transition clearance immediately stopping TTS when the new route was loaded.
  • New: Added protection window in VoiceGuidanceScheduler (notifyUrgentSpoken()) to protect urgent system announcements from being stopped by step changes or overlapped by new maneuver instructions.
  • Update: Bilingual support for rerouting voice announcements and banner instruction text:
    • Thai (th): Voice speaks "ระบบกำลังคำนวณเส้นทางใหม่", banner displays "ระบบกำลังคำนวณเส้นทางใหม่..."
    • English (en): Voice speaks "Recalculating route", banner displays "Recalculating route..."

0.13.6 #

Routing #

  • New: Alternative routes are now automatically sorted so that the fastest route (shortest duration, then shortest distance) is always selected as the primary route (index 0).

0.13.5 #

  • Fix: Rural highways (ทางหลวงชนบท) no longer get ถนนหมายเลข <ref> appended to the instruction text/voice — the number is already in the road name and shown by the route badge. The road ref is also not appended when the name already contains it as a whole token. streetRef is unchanged, so the badge still shows.
  • New: TtsPronunciation and PowerMapNavigator.setPronunciationMap() rewrite abbreviations only in the text sent to TTS (on-screen text is unchanged). Built-in default: รพช. → ร พ ช, preventing iOS from expanding it to "กรมการเร่งรัดพัฒนาชนบท".
  • Fix: Fixed an issue where the vehicle arrow would freeze and stop updating when stopping and restarting navigation (_isPaused is now correctly reset).
  • Fix: Fixed an issue where the camera tilt and rotation would get stuck and not return to normal follow mode after completing a turn (_inTurnApproach exit conditions and bearing bounds % 360 are now correctly handled).

0.13.4 #

Responsive Navigation Icons #

  • New: Navigation icons (vehicle arrow, turn arrows, arrowhead markers) now scale responsively based on the device's screen size using NavigationMathUtils.responsiveIconScale().
    • iPhone SE (~375pt): Icons shrink ~12% to fit the smaller viewport proportionally.
    • Standard phone (~390pt): No change — baseline reference size.
    • Tablet (~768pt+): Icons shrink ~25-30% so they don't dominate the larger map area.
    • Scale factor is computed once per session from the shortest screen dimension (logical pixels) and cached.
  • Affected elements: Vehicle arrow image (120px canvas + stroke width), vehicle iconSize in symbol layer, vehicle hitbox circleRadius, turn arrow casing/core line widths (zoom-interpolated), and arrowhead symbol iconSize (zoom-interpolated).

Camera Bearing & Compass Sync Fixes #

  • Fix: Camera now tracks the vehicle arrow direction accurately during navigation — both simulation and GPS modes. Previously the camera bearing lagged significantly behind the arrow, especially on long gradual curves.
    • Simulation mode: Increased bearing smoothing alpha from 0.08–0.25 → 0.12–0.35 (arrow) and 0.12 → adaptive 0.18–0.35 (camera).
    • GPS mode: Increased bearing smoothing alpha from 0.02–0.15 → 0.08–0.30.
  • Fix: Added Lookahead Bearing — the camera now anticipates upcoming gradual curves by blending the current segment bearing with the road direction 40m ahead. Gated to curves < 25° — sharp intersection turns are excluded to prevent the arrow from pointing diagonally before the turn.
  • Fix: Camera bearing now tracks the smoothed vehicle bearing (_vehicleBearing) instead of the raw target bearing, ensuring the camera and arrow stay tightly synchronized.
  • Fix: Compass widget now correctly follows the vehicle arrow direction in simulation mode. Previously, NavigationState.vehicleBearing emitted raw segment bearing instead of the smoothed arrow bearing, causing the compass to show a different direction than the arrow on the map.
  • Refactor: Reordered bearing computation — vehicle bearing is now computed first (arrow leads), then camera bearing tracks the vehicle bearing (camera follows), in both simulation and GPS modes.

Route Ref Extraction Fix #

  • Fix: Prevented soi numbers and road-name components from being incorrectly extracted as highway ref numbers when street_ref is not provided by the API. Previously, names like พระราม 4, ประชาราษฎร์สาย 2, ซ.ประชาชื่น 30 had their trailing numbers extracted as highway refs — causing wrong route summaries (e.g. พระราม 4 (4)) and wrong voice guidance (e.g. "ถนนหมายเลข 4").
    • Guard rule: When a candidate ref is a pure digit and the street name contains Thai characters (2+), the number is treated as part of the road name or a soi number, not a highway ref.
    • Added ซ. detection alongside existing ซอย check for soi abbreviation filtering.
    • API-provided street_ref values (e.g. วิภาวดีรังสิต=31, สายเอเชีย=32, ติวานนท์=306) are not affected.

0.13.3 #

Voice Guidance Improvements #

  • Fix: Eliminated redundant destination announcements that caused TTS to speak 5-6 times near the destination. Now speaks exactly 3 distinct messages:
    1. ~200m: "อีก 200 เมตรถึงจุดหมายปลายทาง" / "200 meters to destination."
    2. ~30m: "ใกล้ถึงจุดหมายปลายทางแล้ว" / "Approaching your destination."
    3. Arrived: "ถึงจุดหมายปลายทางเรียบร้อย" / "You have arrived at your destination."
  • Fix: VoiceGuidanceScheduler now skips all stages (advance, preparation, execution) for ManeuverType.arrive — destination speech is fully managed by _checkDistanceAnnouncements() and _triggerArrival().

Custom Speech Rate #

  • New: setSpeechRate(double?) now persists the custom rate in _customSpeechRate, ensuring it is not overridden by language changes or TTS re-initialization.
  • Update: _getSpeechRate() checks _customSpeechRate first before falling back to platform defaults — allows host apps to set user-preferred TTS speed.

0.13.2 #

  • Update: Refactored NavigationTextFormatter to construct more natural voice and banner instructions based on route context (continuous road tracking and dynamic verb extraction).
  • Fix: Reduced duplicate "Arrive" voice announcement spam by skipping the advance stage when approaching the final destination.

0.13.1 #

Bug Fixes #

  • Fix: Resolved an issue where the native user location indicator failed to appear if location permissions were granted after the map had already initialized.
  • Fix: Fixed a bug in RoutingManager where creating a route for the second time (after clearing) failed to render. MapLibre layer removal is now properly used during route clearing instead of empty GeoJSON updates to prevent optimization issues with linestring buffers.

0.13.0 #

Search V2 & High-Performance Geocoding #

  • New: Added PowerMapController.searchV2() and SearchManager.searchV2() targeting the high-performance NLP & fuzzy geocoding endpoint GET /api/v2/map/geocode.
  • New: Added PowerMapController.autocompleteV2Debounced() and SearchManager.autocompleteV2Debounced() with built-in keystroke debouncing and LRU cache for search-as-you-type UI.
  • New: Native Pagination Support: Added skip (default: 0) and take (default: 20) parameters to searchV2() for paginated address/POI fetching.
  • New: Proximity & Coordinate Biasing: Optional proximity (or location) parameter passes coor=lat,lng to bias results around the user's location with automatic backend distance_km calculation.
  • New: Enhanced PowerMapSearchResult model with optional fields:
    • score: Elasticsearch relevance score (_score).
    • confidence: Fuzzy/NLP match confidence percentage (0-100) from _meta.confidence.
    • meta: Detailed score breakdown (score_details: prov_match, amp_match, text_sim, elastic_score, distance_km) and processing_method.
  • Update: Backward-compatible: Fully preserves existing search(), autocomplete(), reverseGeocode(), and searchByCategory() methods without breaking changes.

0.12.0 #

Route Lifecycle & Map Rendering #

  • New: Introduced NavigationSession identity to prevent stale asynchronous route responses from overwriting the active navigation session.
  • New: Silent Re-evaluation on startNavigation() — If the user has moved more than 50 meters from the original planning route's origin, the SDK automatically and silently requests a new route from the current GPS without playing the "Rerouting" voice instruction.
  • Fix: Replaced MapLibre addLayer/removeLayer with setGeoJsonSource for all route updates. This completely eliminates flickering during reroutes and prevents "Ghost Routes" from sticking to the map.
  • Fix: Added strict Timestamp filtering to GPS Location Events to prevent the camera and vehicle from rubber-banding backwards when stale GPS events arrive late.
  • Update: Rerouting (_performReroute) now strictly requests only the Main Route to minimize latency and cognitive load during off-route emergencies.

0.11.2 #

Route & Map Stability #

  • Fix: Resolved NullPointerException (app crash) in MapLibre when stopping navigation or switching routes. This was caused by late GPS updates attempting to modify destroyed route layers. disposeRoute, disposeStepTurnArrows, and clearAlternativeRoutes now safely clear GeoJSON data instead of destroying the MapLibre source completely.

0.11.1 #

Smart Voice Guidance & Speech Queue (Integrated) #

  • Fix: Integrated VoiceGuidanceScheduler into PowerMapNavigator, replacing the old _speak() method with its 1.8s cooldown that was insufficient to prevent rapid-fire TTS overlap.
  • New: Speed-adaptive 3-stage voice guidance (advance → preparation → execution) with distance thresholds that adapt to vehicle speed:
    • Highway (>80 km/h): 2km → 800m → 250m
    • Main road (40–80 km/h): 1km → 400m → 100m
    • City (<40 km/h): 400m → 150m → 40m
  • New: Stage Locking — each voice stage fires exactly once per step, preventing duplicate announcements.
  • New: 3.8s cooldown interval — non-urgent speech is suppressed if another announcement was made within the last 3.8 seconds.
  • New: Step Transition Cut-off — instantly stops stale speech when the vehicle passes a maneuver point.
  • New: Compound Instruction Merging — consecutive turns within 60m are merged into a single announcement.
  • New: Priority Interruption — execution-stage (urgent) instructions cut off lower-priority speech instantly.
  • Update: System messages (reroute, arrival, distance) bypass the maneuver scheduler via _speakUrgent() and reset cooldown.
  • Fix: Reset voice queue and state on startNavigation(), stopNavigation(), and pauseSimulation().

0.11.0 #

Alternative Routes & Multi-Route Management #

  • New: Added PowerMapController.addRouteWithAlternatives() and RoutingManager.addRouteWithAlternatives() supporting the PowerMap Alternative Route API.
  • New: Introduced PowerMapRoutesResult model containing candidate routes (routes), active index (selectedIndex), selectedRoute, and duration comparison utilities (timeDifferenceMinutes, isFastest).
  • New: Multi-Polyline Simultaneous Rendering on Map:
    • Primary/Active route rendered in prominent vibrant blue (#3b82f6 with casing #1d4ed8) on the top layer.
    • Alternative/Inactive routes rendered in subtle slate gray (#94a3b8 with casing #64748b) on underlying layers.
  • New: Added selectRoute(index) to seamlessly switch the active route and restyle polyline layers in real time.
  • New: Added findNearestRouteIndex(tapLocation) enabling direct tap-to-select interaction on alternative route polylines on the map.
  • New: Added automatic major road name extraction (summary on PowerMapRouteResult, e.g. "ผ่าน อยุธยา-สาลี (3263)", "ผ่าน สายเอเชีย (32)") to enrich route selection cards.
  • Update: Enhanced _decodePolyline to properly support variable precision (precision 5 for GraphHopper/Alternative routes, precision 6 for OSRM).
  • Update: Navigation Integration (PowerMapNavigator):
    • Automatically purges alternative route layers when startNavigation() is called to ensure clean turn-by-turn guidance.
    • Off-route dynamic rerouting (_performReroute) now queries the new endpoint for the single fastest recovery path, immediately restoring guidance without driver distraction.
  • Update: Graceful automatic fallback: if alternative route endpoint is unavailable or returns an error, gracefully falls back to legacy single routing without throwing exceptions.

0.10.0 #

  • Fix: Suppressed compass/magnetometer updates during rerouting and for an 8-second stabilization window to prevent vehicle arrow spinning in vehicles.
  • Fix: Implemented road-bearing lookahead (>= 5 meters along new route) to establish an accurate and stable initial heading after reroute.
  • Fix: Reset stale GPS anchors (_lastGpsPos and _smoothedGps) to the new route geometry, eliminating cross-median angle calculation bugs.
  • Fix: Added guard for Android devices reporting invalid heading 0.0 when compass is unavailable.
  • Fix: Immediately wiped old traveled-route-source GeoJSON on reroute to prevent ghost polyline remnants.
  • New: Added onRerouted callback to PowerMapNavigator to notify host applications of route replacement.

Search & Geocoding #

  • New: Added support for nationwide search when proximity is omitted.
  • Update: Implemented automatic two-phase fallback in PowerMapGeocodingService — expands to nationwide search when proximity search returns fewer than 3 results.

0.9.0 #

  • Update: Added _userPreferredTilt to maintain user-selected camera mode (2D / 3D) across turn approaches, pause/resume, and rerouting cycles.
  • Update: is2DMode getter now accurately reflects user-preferred camera mode rather than transient camera tilt states.
  • Fix: Smooth restoration of user-preferred zoom and tilt levels after completing turn maneuver approaches.

Rerouting Improvements & Traveled Route Layering #

  • New: Added _reorderTraveledRouteLayers to ensure traveled route and off-route connector layers are properly re-layered above new route polylines after dynamic rerouting.
  • Update: Synchronized initial camera bearing immediately upon reroute completion for seamless heading alignment with the new route geometry.

0.8.0 #

Speed Limit API #

  • New: Integrated PowerMap Speed Limit API (/api/v2/map/speed-limit).
  • New: Added SpeedLimitService with a 4-layer throttling engine (Road Segment ID ogc_fid cache, 30m distance filter, 4s time cooldown, in-flight request lock) to prevent excessive backend API calls.
  • New: Extended NavigationState with speedLimit and speedLimitResult fields.

Turn-by-Turn Dynamic Step Arrows #

  • New: Introduced dynamic turn maneuver guidance arrows rendered directly on the navigation polyline (drawStepTurnArrows).
  • New: 3-layer arrow rendering system (Casing line, White core line, Arrowhead symbol layer) featuring Google Maps style zoom level interpolation for realistic scaling.
  • New: Added clearStepTurnArrows and disposeStepTurnArrows lifecycle methods.

Search & Auto-Language Script Detection #

  • New: lang parameter default updated to 'auto' across search and autocomplete methods.
  • New: Automatic script detection (Thai / English / Mixed) with multi-endpoint fallback querying and GID deduplication.
  • New: Extended PowerMapSearchResult with nameTh, nameEn, addressTh, and addressEn fields for localized property formatting.
  • Update: Smart Camera Offset (_offsetCameraTarget) in 3D perspective navigation to position the vehicle arrow down-screen and extend forward road visibility.
  • Update: Route polyline line caps updated to round for smooth segment join rendering.
  • Update: Added transportation profile parameter preservation to PowerMapRouteResult.

0.7.0 #

  • Fix: Replaced the iOS layer Z-Index workaround with a robust dynamic Route Trimming algorithm. The active blue route is now physically trimmed as the vehicle progresses, completely preventing overlap with the traveled path.
  • Fix: Changed route lineCap to butt to prevent visual bleeding and overlap artifacts at segment joints.
  • Fix: Resolved an iOS MapLibre crash caused by passing a 1-point LineString for the traveled route by duplicating the point to form a valid zero-length line.

0.6.0 #

  • Fix: Resolved an iOS-specific Z-Index bug where the blue planned route would incorrectly draw over the gray traveled route path.

0.5.0 #

  • Update: Smoothed map polyline rendering with rounded line joints and caps.
  • Update: Improved Navigation Camera UX with smooth, interpolated "slide" transitions and adaptive 2D/3D toggles.
  • Update: Optimized GPS responsiveness and accuracy with adjusted update throttling and accuracy thresholds.
  • Fix: Fixed visual and behavioral issues in Navigation Simulation UX, including vehicle marker animation and traveled route path overlapping.

0.4.0 #

  • New: Introduced Navigation 2.0 engine with completely revamped internal math algorithms for smoother vehicle tracking.
  • New: Added Smart Arrival Detection that accurately determines trip completion in both Simulation and GPS modes.
  • New: Added 3-Stage Voice Guidance pre-announcements for upcoming maneuvers.
  • New: Added Audio Ducking support on iOS to improve navigation voice clarity over background audio.
  • New: Added Estimated Time of Arrival (ETA) and Current Speed to the public navigation state.
  • New: Integrated Background Navigation capabilities (Android Foreground Services & iOS Background Modes).
  • New: Added Screen Wakelock support to keep the display active during navigation.
  • Update: Improved the Camera Bearing system to be adaptive based on vehicle speed, resulting in smoother map rotations.
  • Update: Enhanced the Snap-to-Road algorithm to prevent incorrect snapping on complex routes (like U-turns and parallel roads).
  • Update: Upgraded the GPS filtering mechanism with adaptive accuracy thresholds to handle poor signal areas better.
  • Update: Optimized Simulation Mode with a dynamic speed curve that intelligently slows down before sharp turns.
  • Fix: Fixed an issue where the vehicle marker would incorrectly jump to the starting point of a route before getting the first GPS lock.
  • Fix: Fixed a problem where the camera movement appeared jerky on certain low-speed or high-noise segments.

0.3.1 #

3D Map Tiles (fill-extrusion) #

  • New: enable3DBuildings parameter added to PowerMap constructor. Default is true.
  • New: 3D buildings (fill-extrusion layers) will now be rendered automatically when the map is tilted, provided enable3DBuildings is true.
  • Update: Style caching now uses separate cache files (_2d and _3d) to prevent style interference when toggling 3D capabilities.
  • Update: initialCameraPosition no longer forces a 60-degree tilt by default; it strictly follows the initialTilt parameter (defaults to 0.0) regardless of the 3D setting.

0.3.0 #

  • New: setCameraMode2D() — switches camera to 0° tilt (top-down view) with smooth animateCamera transition.
  • New: setCameraMode3D() — switches camera to 70° tilt (perspective view) with smooth transition.
  • New: is2DMode getter — returns whether the navigator is currently in 2D mode.
  • All internal hardcoded tilt: 70.0 values replaced with the _cameraTilt state variable, ensuring consistent behavior across startNavigation(), setTracking(), _animateGpsInterpolation(), and _updateSimulationFrame().
  • New: setNavigationLanguage(String lang) — dynamically sets the navigation language ('th' or 'en') for both API calls and TTS voice guidance.
  • Fix: _performReroute() now uses the active navigation language instead of a hardcoded 'en', preventing language mixing during rerouting.
  • Fix: _initTts() now initializes the TTS locale based on the active navigation language, ensuring consistent pronunciation.

Route Rendering (GeoJSON Z-Index) #

  • Breaking: Route line rendering refactored from addLine() annotations to addGeoJsonSource() + addLineLayer() with belowLayerId support.
  • Route lines are now drawn underneath road number labels and text labels at all zoom levels.
  • Added _findLabelLayerId() helper that auto-discovers the map style's first label/symbol layer.
  • clearRoutes() now properly removes GeoJSON layers and source, with legacy clearLines() fallback.

Indoor Mapping (IMDF) #

  • Fix: IMDFConverter — corrected venue and building kind classification. Previously both were incorrectly mapped to 'floor', now correctly return 'venue' and 'building' respectively.
  • New: IMDF conversion re-enabled in GeometryManager.getGeoJSON() and export(). The toIMDF() path was previously commented out; it is now active for both single-feature and bulk retrieval.
  • New: IndoorManager is now integrated into PowerMapController as controller.indoor, providing a unified facade access point.

Geometry Manager Improvements #

  • Refactored: importGeoJson() now creates shared geometry-type layers (polygon, line, symbol) with geometry-type filters, instead of creating individual per-feature layers. This significantly reduces layer count for complex IMDF datasets.
  • New: setLayerFilter(sourceId, filter) — applies a composited filter (merged with base geometry-type filter via ['all', ...]) to all layers of a source. Enables dynamic floor switching without re-importing data.
  • New: Internal _layerBaseFilters map tracks base filters per layer for correct filter compositing.

Widget Marker Coordinate Fix #

  • Fix: PowerMap widget now correctly applies devicePixelRatio when converting geographic coordinates to screen positions for widget markers. Fixes misaligned widget markers on high-DPI devices.

0.2.0 #

  • New: opacity parameter added to addMarker() — set initial marker visibility (0.0 = invisible, 1.0 = fully visible).
  • New: setMarkersOpacity(double opacity) method on PowerMapController — bulk-sets opacity of all native GL markers (Circles and Symbols) in a single call.
  • Fix: circleStrokeOpacity and iconOpacity now correctly reflect the opacity parameter when creating markers.
  • These two additions enable smooth fade-in animation when refreshing markers, eliminating the visual "flash" from clearMarkers() + re-add cycles.

0.1.0 #

  • Initial pre-release of PowerMap SDK.
  • Core managers implemented: Geometry, Map, Routing, Search, Tracking, Layer, Cluster.
  • Facade API accessible via PowerMapController.
1
likes
120
points
1.1k
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A comprehensive Flutter SDK for PowerMap, offering location plotting, geometry measurements, layer management, routing, search, and tracking.

Homepage
Repository (GitLab)

License

MIT (license)

Dependencies

flutter, flutter_background_service, flutter_compass, flutter_tts, font_awesome_flutter, geolocator, http, maplibre_gl, path_provider, url_launcher

More

Packages that depend on powermap_sdk