powermap_sdk 0.14.0
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 from15.0mto9.0m(and steepness0.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
.0decimals 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
NavigationTextFormatterwhen the verb ends with "ไปยัง" or is "ต่อไปยัง", eliminating redundant repetition (e.g. "ต่อไปยัง ถนนพหลโยธิน" instead of "ต่อไปยัง ไปยัง ถนนพหลโยธิน"). - New: Global Abbreviation Expansion:
TtsPronunciationnow 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 <= 2gate with direct spatial arrival distance (effectiveDistToDest <= 35mortotalRemaining <= 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.
- Replaced strict
- Fix:
_speakUrgent()no longer wipes scheduler stage locks (resetScheduler: falseby default), preventing TTS state loss during distance/system announcements.
0.13.7 #
Navigation Voice Guidance & Rerouting #
- 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..."
- Thai (
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 #
Navigation Text & Voice #
- 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.streetRefis unchanged, so the badge still shows. - New:
TtsPronunciationandPowerMapNavigator.setPronunciationMap()rewrite abbreviations only in the text sent to TTS (on-screen text is unchanged). Built-in default:รพช.→ร พ ช, preventing iOS from expanding it to "กรมการเร่งรัดพัฒนาชนบท".
Navigation Engine & Camera #
- Fix: Fixed an issue where the vehicle arrow would freeze and stop updating when stopping and restarting navigation (
_isPausedis 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 (
_inTurnApproachexit conditions and bearing bounds% 360are 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
iconSizein symbol layer, vehicle hitboxcircleRadius, turn arrow casing/core line widths (zoom-interpolated), and arrowhead symboliconSize(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) and0.12→ adaptive0.18–0.35(camera). - GPS mode: Increased bearing smoothing alpha from
0.02–0.15→0.08–0.30.
- Simulation mode: Increased bearing smoothing alpha from
- 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.vehicleBearingemitted 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_refis not provided by the API. Previously, names likeพระราม 4,ประชาราษฎร์สาย 2,ซ.ประชาชื่น 30had 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_refvalues (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:
- ~200m: "อีก 200 เมตรถึงจุดหมายปลายทาง" / "200 meters to destination."
- ~30m: "ใกล้ถึงจุดหมายปลายทางแล้ว" / "Approaching your destination."
- Arrived: "ถึงจุดหมายปลายทางเรียบร้อย" / "You have arrived at your destination."
- Fix:
VoiceGuidanceSchedulernow skips all stages (advance, preparation, execution) forManeuverType.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_customSpeechRatefirst before falling back to platform defaults — allows host apps to set user-preferred TTS speed.
0.13.2 #
Navigation Voice Guidance & Formatting #
- Update: Refactored
NavigationTextFormatterto 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
RoutingManagerwhere 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()andSearchManager.searchV2()targeting the high-performance NLP & fuzzy geocoding endpointGET /api/v2/map/geocode. - New: Added
PowerMapController.autocompleteV2Debounced()andSearchManager.autocompleteV2Debounced()with built-in keystroke debouncing and LRU cache for search-as-you-type UI. - New: Native Pagination Support: Added
skip(default: 0) andtake(default: 20) parameters tosearchV2()for paginated address/POI fetching. - New: Proximity & Coordinate Biasing: Optional
proximity(orlocation) parameter passescoor=lat,lngto bias results around the user's location with automatic backenddistance_kmcalculation. - New: Enhanced
PowerMapSearchResultmodel 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) andprocessing_method.
- Update: Backward-compatible: Fully preserves existing
search(),autocomplete(),reverseGeocode(), andsearchByCategory()methods without breaking changes.
0.12.0 #
Route Lifecycle & Map Rendering #
- New: Introduced
NavigationSessionidentity 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/removeLayerwithsetGeoJsonSourcefor 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
VoiceGuidanceSchedulerintoPowerMapNavigator, 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(), andpauseSimulation().
0.11.0 #
Alternative Routes & Multi-Route Management #
- New: Added
PowerMapController.addRouteWithAlternatives()andRoutingManager.addRouteWithAlternatives()supporting the PowerMap Alternative Route API. - New: Introduced
PowerMapRoutesResultmodel 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 (
#3b82f6with casing#1d4ed8) on the top layer. - Alternative/Inactive routes rendered in subtle slate gray (
#94a3b8with casing#64748b) on underlying layers.
- Primary/Active route rendered in prominent vibrant blue (
- 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 (
summaryonPowerMapRouteResult, e.g. "ผ่าน อยุธยา-สาลี (3263)", "ผ่าน สายเอเชีย (32)") to enrich route selection cards. - Update: Enhanced
_decodePolylineto 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.
- Automatically purges alternative route layers when
- 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 #
Navigation Rerouting & Compass Stability #
- 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 (
_lastGpsPosand_smoothedGps) to the new route geometry, eliminating cross-median angle calculation bugs. - Fix: Added guard for Android devices reporting invalid heading
0.0when compass is unavailable. - Fix: Immediately wiped old
traveled-route-sourceGeoJSON on reroute to prevent ghost polyline remnants. - New: Added
onReroutedcallback toPowerMapNavigatorto notify host applications of route replacement.
Search & Geocoding #
- New: Added support for nationwide search when
proximityis omitted. - Update: Implemented automatic two-phase fallback in
PowerMapGeocodingService— expands to nationwide search when proximity search returns fewer than 3 results.
0.9.0 #
Navigation Camera & 2D/3D Mode Persistence #
- Update: Added
_userPreferredTiltto maintain user-selected camera mode (2D / 3D) across turn approaches, pause/resume, and rerouting cycles. - Update:
is2DModegetter 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
_reorderTraveledRouteLayersto 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
SpeedLimitServicewith a 4-layer throttling engine (Road Segment IDogc_fidcache, 30m distance filter, 4s time cooldown, in-flight request lock) to prevent excessive backend API calls. - New: Extended
NavigationStatewithspeedLimitandspeedLimitResultfields.
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
clearStepTurnArrowsanddisposeStepTurnArrowslifecycle methods.
Search & Auto-Language Script Detection #
- New:
langparameter 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
PowerMapSearchResultwithnameTh,nameEn,addressTh, andaddressEnfields for localized property formatting.
Navigation Camera & Polyline Refinements #
- 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
roundfor smooth segment join rendering. - Update: Added transportation
profileparameter preservation toPowerMapRouteResult.
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
lineCaptobuttto prevent visual bleeding and overlap artifacts at segment joints. - Fix: Resolved an iOS MapLibre crash caused by passing a 1-point
LineStringfor 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 #
Navigation 2.0.1 #
- 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 #
Navigation 2.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:
enable3DBuildingsparameter added toPowerMapconstructor. Default istrue. - New: 3D buildings (fill-extrusion layers) will now be rendered automatically when the map is tilted, provided
enable3DBuildingsis true. - Update: Style caching now uses separate cache files (
_2dand_3d) to prevent style interference when toggling 3D capabilities. - Update:
initialCameraPositionno longer forces a 60-degree tilt by default; it strictly follows theinitialTiltparameter (defaults to 0.0) regardless of the 3D setting.
0.3.0 #
Navigation Camera Mode (2D/3D) #
- New:
setCameraMode2D()— switches camera to 0° tilt (top-down view) with smoothanimateCameratransition. - New:
setCameraMode3D()— switches camera to 70° tilt (perspective view) with smooth transition. - New:
is2DModegetter — returns whether the navigator is currently in 2D mode. - All internal hardcoded
tilt: 70.0values replaced with the_cameraTiltstate variable, ensuring consistent behavior acrossstartNavigation(),setTracking(),_animateGpsInterpolation(), and_updateSimulationFrame().
Navigation Localization (Dynamic Language) #
- 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 toaddGeoJsonSource()+addLineLayer()withbelowLayerIdsupport. - 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 legacyclearLines()fallback.
Indoor Mapping (IMDF) #
- Fix:
IMDFConverter— correctedvenueandbuildingkind classification. Previously both were incorrectly mapped to'floor', now correctly return'venue'and'building'respectively. - New: IMDF conversion re-enabled in
GeometryManager.getGeoJSON()andexport(). ThetoIMDF()path was previously commented out; it is now active for both single-feature and bulk retrieval. - New:
IndoorManageris now integrated intoPowerMapControllerascontroller.indoor, providing a unified facade access point.
Geometry Manager Improvements #
- Refactored:
importGeoJson()now creates shared geometry-type layers (polygon, line, symbol) withgeometry-typefilters, 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
_layerBaseFiltersmap tracks base filters per layer for correct filter compositing.
Widget Marker Coordinate Fix #
- Fix:
PowerMapwidget now correctly appliesdevicePixelRatiowhen converting geographic coordinates to screen positions for widget markers. Fixes misaligned widget markers on high-DPI devices.
0.2.0 #
- New:
opacityparameter added toaddMarker()— set initial marker visibility (0.0 = invisible, 1.0 = fully visible). - New:
setMarkersOpacity(double opacity)method onPowerMapController— bulk-sets opacity of all native GL markers (Circles and Symbols) in a single call. - Fix:
circleStrokeOpacityandiconOpacitynow correctly reflect theopacityparameter 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.