15 KiB
15 KiB
Changelog
All notable changes to the SDK NuGet package and it's supporting scripts will be documented in this file.
The format is based on Keep a Changelog and the SDK NuGet package adheres to Semantic Versioning.
Refer to the Getting Started documentation for instructions about how to import and upgrade the SDK.
0.9.1 - 2020-06-18
Supporting Scripts
Added
- Remaining types of
MapRenderer
transformations:TransformMercatorWithAltitudeToLocalPoint
,TransformMercatorWithAltitudeToWorldPoint
,TransformLatLonAltToLocalPoint
Changed
- Renamed
MapNavigation
toMapInteractionController
. Added APIs for panning and zooming to a specified coordinate/ray.
Fixed
MapPin
location could not be changed once initialized. #66MapLabel
scaling was incorrect on first frame. #68
0.9.0 - 2020-06-11
This release consists of a large number of breaking changes. Various components have been moved out of the core DLL to the Supporting Scripts. See the Getting Started page for information on how to migrate from previous versions.
Maps SDK
Added
MapSession
component manages developer key for associatedMapRenderer
s and map services.MapRendererBase
provides an abstract base class component which includes the core map rendering functionality.IPinnable
interface is used for types that need to be geospatially anchored to the map, e.g.MapPin
,ClusterMapPin
.
Changed
MercatorBoundingCircle
moved to Microsoft.Geospatial namespace.MapRendererBase.LocalMapHeight
now represents the total height extent of the map, which varies based on content.MapRendererBase.LocalMapBaseHeight
provides the height offset where map content begins rendering.MapRendererBase.Language
property can be changed at runtime.
Removed
MapRenderer
,MapPinLayer
,MapPin
,ClusterMapPin
,MapPinSpatialIndex
,MapDataCache
. These classes, or portions of, have been moved to the Supporting Scripts.- Removed
Vector2D
. UseMercatorCoordinate
instead. - Removed
LatLon.FromMercatorPosition
. UseMercatorCoordinate.ToLatLonAlt
instead.
Supporting Scripts
Added
MapRenderer
component. Extends fromMapRendererBase
. Handles tracking childrenMapPin
s, managing the extents of theMapCollider
, and managing map animations.MapPin
related scripts and implementation for indexing and clustering.MapScene
related scripts for animations.MapDataCache
determines cache size to use. On Android, this uses platform specific APIs to find a cache size that accounts for the application's memory limit. This class could be extended with improved implementations for other platforms.- Editor utlity to help migrate old component GUIDs to the updated values. The option is in
Assets -> Maps SDK for Unity -> Upgrade Component GUIDs
.
Fixed
- Fixed bug preventing correct results from
TransformWorldPointToLatLonAlt
when the map object had scaling, translation, or rotation. - Fixed related issue where
MapRendererBase.ElevationScale
was not being applied to the transformations.
0.8.1 - 2020-05-27
Maps SDK
Fixed
- Adds dependencies to fix linker error when building iOS applications.
0.8.0 - 2020-05-20
Maps SDK
Added
- Localization improvements. The
MapRenderer
automatically detects device language and culture settings to localize map content. See the Localization section of the MapRenderer's settings. - Helper class to convert Unity
SystemLanguage
enumerations to LCIDs or culture codes. - Ability to modify or disable the collider being used for rough collisions.
Fixed
- Enabled options in the
DefaultTextureTileLayer
to provide raster imagery with roads, borders, and labels. #34
0.7.1 - 2020-05-08
Maps SDK
Fixed
- Meta files used for native plugins are now compatible with Unity 2018.4+. #52
- Fixed bug that caused raycast to fail in some conditions.
- Reduced overhead of clipping distance render pass.
0.7.0 - 2020-05-04
Maps SDK
Added
- Native plugin that improves the efficiency of decoding map data and signifcantly reduces GC usage. Supported platforms: Android/iOS/Windows.
- Compressed texture formats for model data on Android/iOS, reducing memory usage on these platforms.
- Elevation scale API that can be used to exaggerate or flatten terrain. #50
Removed
- Removed support for the deprecated UWP .NET scripting backend.
0.6.1 - 2020-04-17
Maps SDK
Changed
- Removed 257x257 dimension restriction of
ElevationTiles
.
Fixed
- Threading issue causing map data to not load. (#40)
- Further reduced large temporary GC allocations on background threads.
Supporting Scripts
Added
UnityWebRequestAwaiterExtensionMethods
to enable UnityWebRequests to be used with async/await.
0.6.0 - 2020-04-09
Maps SDK
Added
ElevationTileLayer
to enable rendering custom elevation data sources.
Fixed
- More reduction of GC allocations. There are no longer allocations when the map is idle.
- Copyright text not being culled and showing through map.
- Copyright text misaligned in certain rotations.
0.5.1 - 2020-03-03
Maps SDK
Added
TextureTile.FromUrl
API to simplify requesting images (JPEG/PNG) from the web. Custom implementations ofTextureTileLayer
will no longer need to interact with UnityWebRequest or HttpClient to request imagery.UnityTaskFactory
provides some utility APIs to run async tasks on Unity's main thread.
Changed
TextureTileLayer
API return type has been changed to aNullable<TextureTile>
. This is a breaking change if you have implemented a customTextureTileLayer
.
Fixed
- Empty textures on iOS caused by DXT1 texture format. Any DXT1 texture will now be transcoded to RGB24 (on iOS only).
- Large reduction in overall size and frequency of GC allocations caused by the MapRenderer.
Supporting Scripts
Changed
HttpTextureTileLayer
updated to leverageTextureTile.FromUrl
API.
0.5.0 - 2020-01-08
Maps SDK
Added
- Circular
MapShape
option.
Changed
- New approach for rendering side walls of map. Does not rely on geometry shaders.
0.4.2 - 2019-12-11
Maps SDK
Added
- The maximum cache size used for storing map data is now configurable. See the Quality Settings section of the MapRenderer's editor. (#35)
Changed
- The default MapRenderer cache size has been lowered. Currently the cache size uses 1/3 of system memory, but can be no larger than 2GB. The maximum size is now configurable. (#35)
Fixed
- Intermittent exception message related to TextureTileLayers. (#35)
- The MapRenderer now respects layer setting of the GameObject. MapPins and MapLabels automatically use same layer as parent MapRenderer. (#32)
0.4.1 - 2019-11-15
Maps SDK
Added
- The
DefaultTextureTileLayer
now supports Bing Maps symbolic imagery as well as aerial imagery with road and label overlays. Previously aerial imagery (without road overlays or labels) was the only imagery type supported.
Supporting Scripts
Added
HttpTextureTileLayer
component that makes it easy to stream texture tiles by specifying a formatted URL.- More Editor UI improvements around
TextureTileLayer
. Right-clicking a tile layer in list now brings up option to edit the underlying script.
Changed
MapRendererTransformExtension
APIs renamed to more closely follow Unity's transformation-related methods.
0.4.0 - 2019-10-23
Maps SDK
Added
TextureTileLayer
class that can be extended to customize imagery used by theMapRenderer
. Implementations can request data from other Web Mercator tile services, load texture data from disk, or generate textures on the fly. MultipleTextureTileLayers
can be used and layered together, e.g. to overlay partially transparent textures like weather data.DefaultTextureTileLayer
is added automatically to theMapRenderer
. Pulls sattelite aerial imagery from Bing Maps.- Option to enable MRTK hoverlight functionality on the
MapRenderer
terrain.
Fixed
- Spammy error logging when key is invalid.
- Inaccurate results when raycasting elevation data.
- Inaccurate rendering of elevation data.
Supporting Scripts
Added
MapContourLineLayer
renders lines of constant elevation. Line interval and color can be changed dynamically.- Various editor scripts for modifying
TextureTileLayers
.
0.3.0 - 2019-08-26
Maps SDK
Added
- Ability to increase or decrease the terrain quality of the
MapRenderer
. - Ability to disable high-res 3D terrain models, i.e. only use height-map based elevation.
- Ability to render only a flat map surface by disabling aforementioned 3D terrain sources.
- In-editor mouse controls to drag the center of the
MapRenderer
and adjust it's zoom level. Similar mouse controls added forMapPins
to allow for adjusting a pin's position relative to the map. MapPinLayer
now supports serialization of it's children items, soMapPins
can be added to the layer in the editor rather than strictly at runtime.
Changed
- Copyright settings for
MapRenderer
now managed by separate component,MapCopyrightLayer
. This component is auto-added toGameObjects
with aMapRenderer
component.
Fixed
- Handle case when developer key isn't present more gracefully. Less console spam and
MapPins
will continue to position correctly.
Supporting Scripts
Added
- Initial Bing Maps service API. Currently supports geocoding and reverse geocoding via the
LocationFinder
. - Editor scripts for various components have been moved out of the DLL and are now available in the supporting scripts.
Changed
- Editor UI refresh for MapRenderer. Among other visual improvements, the developer key field acts as a password field and the value is now hidden by asterisks.
0.2.3 - 2019-07-15
Maps SDK
Added
MapScene
animation-related logic has been modularized and is now customizable. Default implementation moved to supporting scripts.- Refreshed editor UI for the
MapRenderer
.
Fixed
- Clamp boundary values for various
MapRenderer
properties like center and zoom level.
Supporting Scripts
Added
- Method to calculate scale ratio between the map and Unity's world space.
DefaultAnimationController
implementation used for animatingMapScenes
. This implementation improves the animation speed to account for the logarithmic scaling of zoom level.
0.2.2 - 2019-06-12
Maps SDK
Added
- Additional max distance parameter for the raycast API.
- Provide normal and distance in the raycast result.
Supporting Scripts
Added
- Extension class to
MapRenderer
for transforming points between Unity's world and local coordinate spaces to the map's geographic coordinate system (latitude, longitude, and altitude).
0.2.1 - 2019-05-28
Maps SDK
Fixed
- Rolled back elevation fallback logic which was based on BC1 texture support of the device. Unity is decoding BC1 to RGB automatically.
0.2.0 - 2019-05-24
Maps SDK
Added
- Raycast API on
MapRenderer
to return hit point and corresponding LatLonAlt of a ray intersection with the map.
Fixed
- Perf improvement for rendering. Reduces number of vertices required in certain views.
- Map edge no longer disappears when the map surface is above the viewport.
- Android/iOS compatibility improvements: High-res meshes would render incorrectly on devices that do not support the BC1 texture format. If the device lacks BC1 texture support, fall back to elevation-only rendering instead, which uses the widely supported RGB texture format.
0.1.5 - 2019-05-07
Maps SDK
Fixed
- Networking performance improvements.
0.1.4 - 2019-04-30
Maps SDK
Fixed
- Copyright text is now positioned correctly when the map layout is not using the default dimensions.
- Cleaned up the
ClusterMapPin
editor UI to remove unnecessary properties.
0.1.3 - 2019-04-23
Maps SDK
Fixed
- Regression in
MapPin
size when using real-world scale.
0.1.2 - 2019-04-22
Maps SDK
Added
- Altitude can now be specified on MapPins.
- Maps SDK-related components will now have their help icons direct out to the relevant wiki doc page.
Fixed
- Custom Maps SDK component icons for the editor are now working again.
MapPins
childed toMapRenderer
are positioned correctly in editor after script reloading.
0.1.1 - 2019-04-16
Maps SDK
Fixed
- Elevation terrain tiles will now fall back to lower LODs correctly.
- Seams between tiles should now be much less visible.
0.1.0 - 2019-04-09
Maps SDK
Added
MapRenderer
component that handles streaming and rendering of 3D terrain data.MapPinLayer
that allows for positioningGameObjects
on theMapRenderer
at a specified LatLon.- Ability to cluster
MapPins
perMapPinLayer
. This allows for efficiently rendering large data sets. - Ability to animate the position and zoom level of the map via the
SetMapScene
API. MapLabelLayer
for displaying city labels.- Support for shadow casting and receiving of the map.
- Option to use a custom material for terrain.
Supporting Scripts
Added
- Shader for rendering terrain with support for shadows, heightmap offsets, and clipping to the
MapRenderer
's dimensions. - Shader for rendering side of map. Dynamically generates appropriate triangles by the geometry shader. Supports shadows.
- Script with helper functions to navigate the MapRenderer, e.g. panning and zooming.
- Script for animating map to the specified location and zoom level.