- Add
Map#addImage
andMap#removeImage
API to allow adding icon images at runtime #4404 - Simplify non-browserify bundler usage by making the distribution build the main entrypoint #4423
- Fix issue where coincident start/end points of LineStrings were incorrectly rendered as joined #4413
- Fix bug causing
queryRenderedFeatures
to fail in cases where both multiple sources and data-driven paint properties were present #4417 - Fix bug where tile request errors caused
map.loaded()
to incorrectly returnfalse
#4425
- Improve test coverage across several core modules #4432 #4431 #4422 #4244 🙇♂️
- Prevent Mapbox logo from being added to the map more than once #4386
- Add
type='button'
toFullscreenControl
to prevent button from acting as a form submit #4397 - Fix issue where map would continue to rotate if
Ctrl
key is released before the click during aDragRotate
event #4389 - Remove double
options.easing
description from theMap#fitBounds
documentation #4402
- Automatically add Mapbox wordmark when required by Mapbox TOS #3933
- Increase default
maxZoom
from 20 to 22 #4333 - Deprecate
tiledata
andtiledataloading
events in favor ofsourcedata
andsourcedataloading
. #4347 mapboxgl.util
is no longer exported #1408"type": "categorical"
is now required for all categorical functions. Previously, some forms of "implicitly" categorical functions worked, and others did not. #3717
- Add property functions support for most symbol paint properties #4074, #4186, #4226
- Add ability to specify default property value for undefined or invalid property values used in property functions. #4175
- Improve
Map#fitBounds
to accept different values for top, bottom, left, and rightpadding
#3890 - Add a
FullscreenControl
for displaying a fullscreen map #3977
- Fix validation error on categorical zoom-and-property functions #4220
- Fix bug causing expired resources to be re-requested causing an infinite loop #4255
- Fix problem where
MapDataEvent#isSourceLoaded
always returned false #4254 - Resolve an issue where tiles in the source cache were prematurely deleted, resulting in tiles flickering when zooming in and out and #4311
- Make sure
MapEventData
is passed through on callsMap#flyTo
#4342 - Fix incorrect returned values for
Map#isMoving
#4350 - Fix categorical functions not allowing boolean stop domain values #4195
- Fix piecewise-constant functions to allow non-integer zoom levels. #4196
- Fix issues with
$id
in filters #4236 #4237 - Fix a race condition with polygon centroid algorithm causing tiles not to load in some cases. #4273
- Throw a meaningful error when giving non-array
layers
parameter toqueryRenderedFeatures
#4331 - Throw a meaningful error when supplying invalid
minZoom
andmaxZoom
values #4324 - Fix a memory leak when using the RTL Text plugin #4248
- Merged the Mapbox GL style specification repo to this one (now under
src/style-spec
andtest/unit/style-spec
).
- Fix bug causing
mapbox-gl-rtl-text
plugin to not work #4055
- Style classes are deprecated and will be removed in an upcoming release of Mapbox GL JS.
- Add
Map#isSourceLoaded
method #4033 - Automatically reload tiles based on their
Expires
andCache-Control
HTTP headers #3944 - Add
around=center
option toscrollZoom
andtouchZoomRotate
interaction handlers #3876 - Add support for
mapbox-gl-rtl-text
plugin to support right-to-left scripts #3758 - Add
canvas
source type #3765 - Add
Map#isMoving
method #2792
- Fix bug causing garbled text on zoom #3962
- Fix bug causing crash in Firefox and Mobile Safari when rendering a large map #4037
- Fix bug causing raster tiles to flicker during zoom #2467
- Fix bug causing exception when unsetting and resetting fill-outline-color #3657
- Fix memory leak when removing raster sources #3951
- Fix bug causing exception when when zooming in / out on empty GeoJSON tile #3985
- Fix line join artifacts at very sharp angles #4008
- Add
renderWorldCopies
option to theMap
constructor to give users control over whether multiple worlds are rendered in a map #3885
- Fix performance regression triggered when
Map
pitch or bearing is changed #3938 - Fix null pointer exception caused by trying to clear an
undefined
source #3903
- Incorporate integration tests formerly at
mapbox-gl-test-suite
into this repository #3834
- Fire an error when map canvas is larger than allowed by
gl.MAX_RENDERBUFFER_SIZE
#2893 - Improve error messages when referencing a nonexistent layer id #2597
- Fire an error when layer uses a
geojson
source and specifies asource-layer
#3896 - Add inline source declaration syntax #3857
- Improve line breaking behavior #3887
- Improve
Map#setStyle
performance in some cases #3853
- Fix unexpected popup positioning when some offsets are unspecified #3367
- Fix incorrect interpolation in functions #3838
- Fix incorrect opacity when multiple backgrounds are rendered #3819
- Fix exception thrown when instantiating geolocation control in Safari #3844
- Fix exception thrown when setting
showTileBoundaries
with no sources #3849 - Fix incorrect rendering of transparent parts of raster layers in some cases #3723
- Fix non-terminating render loop when zooming in in some cases #3399
- Add support for property functions for many style properties on line layers #3033
- Make
Map#setStyle
smoothly transition to the new style #3621 - Add
styledata
,sourcedata
,styledataloading
, andsourcedataloading
events - Add
isSourceLoaded
andsource
properties toMapDataEvent
#3590 - Remove "max zoom" cap of 20 #3683
- Add
circle-stroke-*
style properties #3672 - Add a more helpful error message when the specified
container
element doesn't exist #3719 - Add
watchPosition
option toGeolocateControl
#3739 - Add
positionOptions
option toGeolocateControl
#3739 - Add
aria-label
to map canvas #3782 - Adjust multipoint symbol rendering behavior #3763
- Add support for property functions for
icon-offset
#3791 - Improved antialiasing on pitched lines #3790
- Allow attribution control to collapse to an ⓘ button on smaller screens #3783
- Improve line breaking algorithm #3743
- Fix memory leak when calling
Map#removeSource
#3602 - Reduce bundle size by adding custom build of
gl-matrix
#3734 - Improve performance of projection code #3721
- Improve performance of style function evaluation #3816
- Fix exception thrown when using
line-color
property functions #3639 - Fix exception thrown when removing a layer and then adding another layer with the same id but different type #3655
- Fix exception thrown when passing a single point to
Map#fitBounds
#3655 - Fix exception thrown occasionally during rapid map mutations #3681
- Fix rendering defects on pitch=0 on some systems #3740
- Fix unnecessary CPU usage when displaying a raster layer #3764
- Fix bug causing sprite after
Map#setStyle
#3829 - Fix bug preventing
Map
from emitting acontextmenu
event on Windows browsers #3822
- Performance improvements for
Map#addLayer
andMap#removeLayer
#3584 - Add method for changing layer order at runtime -
Map#moveLayer
#3584 - Update vertical punctuation logic to Unicode 9.0 standard #3608
- Fix data-driven
fill-opacity
rendering when using afill-pattern
#3598 - Fix line rendering artifacts #3627
- Fix incorrect rendering of opaque fills on top of transparent fills #2628
- Prevent
AssertionErrors
from pitching raster layers by only callingWorker#redoPlacement
on vector and GeoJSON sources #3624 - Restore IE11 compatability #3635
- Fix symbol placement for cached tiles #3637
- Replace
fill-extrude-height
andfill-extrude-base
properties offill
render type with a separatefill-extrusion
type (with correspondingfill-extrusion-height
andfill-extrusion-base
properties), solving problems with render parity and runtime switching between flat and extruded fills. mapbox/mapbox-gl-style-spec#554 - Change the units for extrusion height properties (
fill-extrusion-height
,fill-extrusion-base
) from "magic numbers" to meters. #3509 - Remove
mapboxgl.Control
class and change the way custom controls should be implemented. #3497 - Remove
mapboxgl.util
functions:inherit
,extendAll
,debounce
,coalesce
,startsWith
,supportsGeolocation
. #3441 #3571 mapboxgl.util
is deprecated and will be removed in the next release. #1408
- Tons of performance improvements that combined make rendering up to 3 times faster, especially for complex styles. #3485 #3489 #3490 #3491 #3498 #3499 #3501 #3510 #3514 #3515 #3486 #3527 #3574 ⚡️⚡️⚡️
- 🈯 Added vertical text writing mode for languages that support it. #3438
- 🈯 Improved line breaking of Chinese and Japanese text in point-placed labels. #3420
- Reduce the default number of worker threads (
mapboxgl.workerCount
) for better performance. #3565 - Automatically use
categorical
style function type when input values are strings. #3384 - Improve control buttons accessibility. #3492
- Remove geolocation button if geolocation is disabled (e.g. the page is not served through
https
). #3571 - Added
Map#getMaxZoom
andMap#getMinZoom
methods #3592
- Fix several line dash rendering bugs. #3451
- Fix intermittent map flicker when using image sources. #3522
- Fix incorrect rendering of semitransparent
background
layers. #3521 - Fix broken
raster-fade-duration
property. #3532 - Fix handling of extrusion heights with negative values (by clamping to
0
). #3463 - Fix GeoJSON sources not placing labels/icons correctly after map rotation. #3366
- Fix icon/label placement not respecting order for layers with numeric names. #3404
- Fix
queryRenderedFeatures
working incorrectly on colliding labels. #3459 - Fix a bug where changing extrusion properties at runtime sometimes threw an error. #3487 #3468
- Fix a bug where
map.loaded()
always returnedtrue
when using raster tile sources. #3302 - Fix a bug where moving the map out of bounds sometimes threw
failed to invert matrix
error. #3518 - Fixed
queryRenderedFeatures
throwing an error if no parameters provided. #3542 - Fixed a bug where using multiple
\n
in a text field resulted in an error. #3570
- 🐞 Fix
npm install mapbox-gl
pulling in alldevDependencies
, leading to an extremely slow install. #3377 - Switch the codebase to ES6. #3388 #3408 #3415 #3421
- A lot of internal refactoring to make the codebase simpler and more maintainable.
- Various documentation fixes. #3440
- Add
fill-extrude-height
andfill-extrude-base
style properties (3d buildings) 🏙️ #3223 - Add customizable
colorSpace
interpolation to functions #3245 - Add
identity
function type #3274 - Add depth testing for symbols with
'pitch-alignment': 'map'
#3243 - Add
dataloading
events for styles and sources #3306 - Add
Control
suffix to all controls⚠️ BREAKING CHANGE⚠️ #3355 - Calculate style layer
ref
s automatically and get rid of user-specifiedref
s⚠️ BREAKING CHANGE⚠️ #3486
- Ensure removing style or source releases all tile resources #3359
- Fix bug causing an error when
Marker#setLngLat
is called #3294 - Fix bug causing incorrect coordinates in
touchend
on Android Chrome #3319 - Fix bug causing incorrect popup positioning at top of screen #3333
- Restore
tile
property todata
events fired when a tile is removed #3328 - Fix bug causing "Improve this map" link to not preload map location #3356
- Fix bug causing attribution to not be shown #3278
- Fix bug causing exceptions when symbol text has a trailing newline #3281
Evented#off
now require two arguments; omitting the second argument in order to unbind all listeners for an event type is no longer supported, as it could cause unintended unbinding of internal listeners.
- Consolidate undocumented data lifecycle events into
data
anddataloading
events (#3255) - Add
auto
value for style spec properties (#3203)
- Fix bug causing "Map#queryRenderedFeatures" to return no features after map rotation or filter change (#3233)
- Change webpack build process (#3235)
⚠️ BREAKING CHANGE⚠️ - Improved error messages for
LngLat#convert
(#3232) - Fix bug where the
tiles
field is omitted from theRasterTileSource#serialize
method (#3259) - Comply with HTML spec by replacing the
div
within theNavigation
control<button>
with aspan
element (#3268) - Fix bug causing
Marker
instances to be translated to non-whole pixel coordinates that caused blurriness (#3270)
- Avoid unnecessary style validation (#3224)
- Share a single blob URL between all workers (#3239)
- Allow querystrings in
mapbox://
URLs #3113 - Allow "drag rotate" interaction to control pitch #3105
- Improve performance by decreasing
Worker
scriptBlob
size #3158 - Improve vector tile performance #3067
- Decrease size of distributed library by removing
package.json
#3174 - Add support for new lines in
text-field
#3179 - Make keyboard navigation smoother #3190
- Make mouse wheel zooming smoother #3189
- Add better error message when calling
Map#queryRenderedFeatures
on nonexistent layer #3196 - Add support for imperial units on
Scale
control #3160 - Add map's pitch to URL hash #3218
- Fix exception thrown when using box zoom handler #3078
- Ensure style filters cannot be mutated by reference #3093
- Fix exceptions thrown when opening marker-bound popup by click #3104
- Fix bug causing fills with transparent colors and patterns to not render #3107
- Fix order of latitudes in
Map#getBounds
#3081 - Fix incorrect evaluation of zoom-and-property functions #2827 #3155
- Fix incorrect evaluation of property functions #2828 #3155
- Fix bug causing garbled text rendering when multiple maps are rendered on the page #3086
- Fix rendering defects caused by
Map#setFilter
and map rotation on iOS 10 #3207 - Fix bug causing image and video sources to disappear when zooming in #3010
- Add support for
line-color
property functions #2938 - Add
Scale
control #2940 #3042 - Improve polygon label placement by rendering labels at the pole of inaccessability #3038
- Add
Popup
offset
option #1962 - Add
Marker#bindPopup
method #3056
- Improve performance of pages with multiple maps using a shared
WebWorker
pool #2952
- Make
LatLngBounds
obey its documented argument order (southwest
,northeast
), allowing bounds across the dateline #2414⚠️ BREAKING CHANGE⚠️ - Fix bug causing
fill-opacity
property functions to not render as expected #3061
- Reduce library size by using minified version of style specification #2998
- Add a warning when rendering artifacts occur due to too many symbols or glyphs being rendered in a tile #2966
- Fix bug causing exception to be thrown by
Map#querySourceFeatures
#3022 - Fix bug causing
Map#loaded
to return true while there are outstanding tile updates #2847
- The
GeoJSONSource
,VideoSource
,ImageSource
constructors are now private. Please usemap.addSource({...})
to create sources andmap.getSource(...).setData(...)
to update GeoJSON sources. #2667 Map#onError
has been removed. You may catch errors by listening for theerror
event. If no listeners are bound toerror
, error messages will be printed to the console. #2852
- Increase max glyph atlas size to accomodate alphabets with large numbers of characters #2930
- Add support for filtering features on GeoJSON / vector tile
$id
#2888 - Update geolocate icon #2973
- Add a
close
event toPopup
s #2953 - Add a
offset
option toMarker
#2885 - Print
error
events without any listeners to the console #2852 - Refactored
Source
interface to prepare for custom source types #2667
- Fix opacity property-functions for fill layers #2971
- Fix
DataCloneError
in Firefox and IE11 #2559 - Fix bug preventing camera animations from being triggered in
moveend
listeners #2944 - Fix bug preventing
fill-outline-color
from being unset #2964 - Fix webpack support #2887
- Prevent buttons in controls from acting like form submit buttons #2935
- Fix bug preventing map interactions near two controls in the same corner #2932
- Fix crash resulting for large style batch queue #2926
- GeoJSON polygon inner rings are now rewound for compliance with the v2 vector tile. This may affect some uses of
line-offset
, reversing the direction of the offset. #2889
- Add
text-pitch-alignment
style property #2668 - Allow query parameters on
mapbox://
URLs #2702 - Add
icon-text-fit
andicon-text-fit-padding
style properties #2720 - Enable property functions for
icon-rotate
#2738 - Enable property functions for
fill-opacity
#2733 - Fire
Map#mouseout
events #2777 - Allow query parameters on all sprite URLs #2772
- Increase sprite atlas size to 1024px square, allowing more and larger sprites #2802
- Add
Marker
class #2725 #2810 - Add
{quadkey}
URL parameter #2805 - Add
circle-pitch-scale
style property #2821
- Fix rendering of layers with large numbers of features #2794
- Fix exceptions thrown during drag-rotate interactions #2840
- Fix error when adding and removing a layer within the same update cycle #2845
- Fix false "Geometry exceeds allowed extent" warnings #2568
- Fix
Map#loaded
returning true while there are outstanding tile updates #2847 - Fix style validation error thrown while removing a filter #2847
- Fix event data object not being passed for double click events #2814
- Fix multipolygons disappearing from map at certain zoom levels #2704
- Fix exceptions caused by
queryRenderedFeatures
in Safari and Firefox #2822 - Fix
mapboxgl#supported()
returningtrue
in old versions of IE11 mapbox/mapbox-gl-supported#1
- Fixed exception thrown when changing
*-translate
properties viasetPaintProperty
(#2762)
- Add limited WMS support #2612
- Add
workerCount
constructor option #2666 - Improve performance of
locationPoint
andpointLocation
#2690 - Remove "Not using VertexArrayObject extension" warning messages #2707
- Add
version
property to mapboxgl #2660 - Support property functions in
circle-opacity
andcircle-blur
#2693
- Fix exception thrown by "drag rotate" handler #2680
- Return an empty array instead of an empty object from
queryRenderedFeatures
#2694 - Fix bug causing map to not render in IE
- Fix rendering of polygons with more than 35k vertices #2657
- Allow use of special characters in property field names #2547
- Improve rendering speeds on fill layers #1606
- Add data driven styling support for
fill-color
andfill-outline-color
#2629 - Add
has
and!has
filter operators mapbox/feature-filter#15 - Improve keyboard handlers with held-down keys #2530
- Support 'tms' tile scheme #2565
- Add
trackResize
option toMap
#2591
- Scale circles when map is displayed at a pitch #2541
- Fix background pattern rendering bug #2557
- Fix bug that prevented removal of a
fill-pattern
from a fill layer #2534 - Fix
line-pattern
andfill-pattern
rendering #2596 - Fix some platform specific rendering bugs #2553
- Return empty object from
queryRenderedFeatures
before the map is loaded #2621 - Fix "there is no texture bound to the unit 1" warnings #2509
- Allow transitioned values to be unset #2561
- Implement zoom-and-property functions for
circle-color
andcircle-size
#2454 - Dedupe attributions that are substrings of others #2453
- Misc performance improvements #2483 #2488
- Fix errors when unsetting and resetting a style property #2464
- Fix errors when updating paint properties while using classes #2496
- Fix errors caused by race condition in unserializeBuckets #2497
- Fix overzoomed tiles in wrapped worlds #2482
- Fix errors caused by mutating a filter object after calling
Map#setFilter
#2495
- Remove
map.batch
in favor of automatically batching style mutations (i.e. calls toMap#setLayoutProperty
,Map#setPaintProperty
,Map#setFilter
,Map#setClasses
, etc.) and applying them once per frame, significantly improving performance when updating the style frequently #2355 #2380 - Remove
util.throttle
#2345
- Improve performance of all style mutation methods by only recalculating affected properties #2339
- Improve fading of labels and icons #2376
- Improve rendering performance by reducing work done on the main thread #2394
- Validate filters passed to
Map#queryRenderedFeatures
andMap#querySourceFeatures
#2349 - Display a warning if a vector tile's geometry extent is larger than supported #2383
- Implement property functions (i.e. data-driven styling) for
circle-color
andcircle-size
#1932 - Add
Popup#setDOMContent
method #2436
- Fix a performance regression caused by using 1
WebWorker
instead of# cpus - 1
WebWorker
s, slowing down tile loading times #2408 - Fix a bug in which
Map#queryRenderedFeatures
would sometimes return features that had been removed #2353 - Fix
clusterMaxZoom
option onGeoJSONSource
not working as expected #2374 - Fix anti-aliased rendering for pattern fills #2372
- Fix exception caused by calling
Map#queryRenderedFeatures
orMap#querySourceFeatures
with no arguments - Fix exception caused by calling
Map#setLayoutProperty
fortext-field
oricon-image
#2407
- Replace
Map#featuresAt
andMap#featuresIn
withMap#queryRenderedFeatures
andmap.querySourceFeatures
(#2224)- Replace
featuresAt
andfeaturesIn
withqueryRenderedFeatures
- Make
queryRenderedFeatures
synchronous, remove the callback and use the return value. - Rename
layer
parameter tolayers
and make it an array of layer names. - Remove the
radius
parameter.radius
was used withfeaturesAt
to account for style properties likeline-width
andcircle-radius
.queryRenderedFeatures
accounts for these style properties. If you need to query a larger area, use a bounding box query instead of a point query. - Remove the
includeGeometry
parameter becausequeryRenderedFeatures
always includes geometries.
- Replace
Map#debug
is renamed toMap#showTileBoundaries
(#2284)Map#collisionDebug
is renamed toMap#showCollisionBoxes
(#2284)
- Improve overall rendering performance. (#2221)
- Improve performance of
GeoJSONSource#setData
. (#2222) - Add
Map#setMaxBounds
method (#2234) - Add
isActive
andisEnabled
methods to interaction handlers (#2238) - Add
Map#setZoomBounds
method (#2243) - Add touch events (#2195)
- Add
map.queryRenderedFeatures
to query the styled and rendered representations of features (#2224) - Add
map.querySourceFeatures
to get features directly from vector tiles, independent of the style (#2224) - Add
mapboxgl.Geolocate
control (#1939) - Make background patterns render seamlessly across tile boundaries (#2305)
- Fix calls to
setFilter
,setLayoutProperty
, andsetLayerZoomRange
on ref children (#2228) - Fix
undefined
bucket errors aftersetFilter
calls (#2244) - Fix bugs causing hidden symbols to be rendered (#2246, #2276)
- Fix raster flickering (#2236)
- Fix
queryRenderedFeatures
precision at high zoom levels (#2292) - Fix holes in GeoJSON data caused by unexpected winding order (#2285)
- Fix bug causing deleted features to be returned by
queryRenderedFeatures
(#2306) - Fix bug causing unexpected fill patterns to be rendered (#2307)
- Fix popup location with preceding sibling elements (#2311)
- Fix polygon anti-aliasing (#2319)
- Fix slivers between non-adjacent polygons (#2319)
- Fix keyboard shortcuts causing page to scroll (#2312)
- Add
ImageSource#setCoordinates
andVideoSource#setCoordinates
(#2184)
- Fix flickering on raster layers (#2211)
- Fix browser hang when zooming quickly on raster layers (#2211)
- Improve responsiveness of zooming out by using cached parent tiles (#2168)
- Improve contextual clues on style API validation (#2170)
- Improve performance of methods including
setData
(#2174)
- Fix incorrectly sized line dashes (#2099)
- Fix bug in which
in
feature filter drops features (#2166) - Fix bug preventing
Map#load
from firing when tile "Not Found" errors occured (#2176) - Fix rendering artifacts on mobile GPUs (#2117)
- Look for loaded parent tiles in cache
- Set tile cache size based on viewport size (#2137)
- Fix tile render order for layer-by-layer
- Remove source update throttling (#2139)
- Make panning while zooming more linear (#2070)
- Round points created during bucket creation (#2067)
- Correct bounds for a rotated or tilted map (#1842)
- Fix overscaled featuresAt (#2103)
- Allow using
tileSize: 512
as a switch to trade retina support for 512px raster tiles - Fix the serialization of paint classes (#2107)
- Fixed bug where unsetting style properties could mutate the value of other style properties (#2105)
- Less slanted dashed lines near sharp corners (#967)
- Fire map#load if no initial style is set (#2042)
- Fix incorrectly rotated symbols along lines near tile boundries (#2062)
- Fix broken rendering when a fill layer follows certain symbol layers (#2092)
- Switch
GeoJSONSource
clustering options from being measured in extent-units to pixels (#2026)
- Improved error message for invalid colors (#2006)
- Added support for tiles with variable extents (#2010)
- Improved
filter
performance and maximum size (#2024) - Changed circle rendering such that all geometry nodes are drawn, not just the geometry's outer ring (#2027)
- Added
Map#getStyle
method (#1982)
- Fixed bug causing WebGL contexts to be "used up" by calling
mapboxgl.supported()
(#2018) - Fixed non-deterministic symbol z-order sorting (#2023)
- Fixed garbled labels while zooming (#2012)
- Fixed icon jumping when touching trackpad with two fingers (#1990)
- Fixed overzoomed collision debug labels (#2033)
- Fixed dashes sliding along their line during zooming (#2039)
- Fixed overscaled
minzoom
setting for GeoJSON sources (#1651) - Fixed overly-strict function validation for duplicate stops (#2075)
- Fixed crash due to
performance.now
not being present on some browsers (#2056) - Fixed the unsetting of paint properties (#2037)
- Fixed bug causing multiple interaction handler event listeners to be attached (#2069)
- Fixed bug causing only a single debug box to be drawn (#2034)
- Fixed broken npm package due to outdated bundled modules
- Fixed easeTo pan, zoom, and rotate when initial rotation != 0 (#1950)
- Fixed rendering of tiles with an extent != 4096 (#1952)
- Fixed missing icon collision boxes (#1978)
- Fixed null
Tile#buffers
errors (#1987)
- Added
symbol-avoid-edges
style property (#1951) - Improved
symbol-max-angle
check algorithm (#1959) - Added marker clustering! (#1931)
- Added zoomstart, zoom, and zoomend events (#1958)
- Disabled drag on mousedown when using boxzoom (#1907)
- Fix elementGroups null value errors (#1933)
- Fix some glyph atlas overflow cases (#1923)
- Support inline attribution options in map options (#1865)
- Improve flyTo options (#1854, #1429)
- Fix flickering with overscaled tiles (#1921)
- Remove Node.remove calls for IE browser compatibility (#1900)
- Match patterns at tile boundaries (#1908)
- Fix Tile#positionAt, fix query tests (#1899)
- Fix flickering on streets (#1875)
- Fix text-max-angle property (#1870)
- Fix overscaled line patterns (#1856)
- Fix patterns and icons for mismatched pixelRatios (#1851)
- Fix missing labels when text size 0 at max zoom (#1809)
- Use linear interp when pixel ratios don't match (#1601)
- Fix blank areas, flickering in raster layers (#1876, #675)
- Fix labels slipping/cropping at tile bounds (#757)
- Improve touch handler perceived performance (#1844)
- Support LngLat.convert([w, s, e, n]) (#1812)
- Invalid GeoJSON is now handled better
- Fixed
Popup#addTo
when the popup is already open (#1811) - Fixed warping when rotating / zooming really fast
Map#flyTo
now flies across the antimeridan if shorter (#1853)
- Reversed the direction of
line-offset
(#1808) - Renamed
Pinch
interaction handler toTouchZoomRotate
(#1777) - Made
Map#update
andMap#render
private methods (#1798) - Made
Map#remove
remove created DOM elements (#1789)
- Added an method to disable touch rotation (#1777)
- Added a
position
option forAttribution
(#1689)
- Ensure tile loading errors are properly reported (#1799)
- Ensure re-adding a previously removed pop-up works (#1477)
- Don't round zoom level during double-click interaction (#1640)
- Added
line-offset
style property (#1778)
- Fixed unstable symbol layer render order when adding / removing layers (#1558)
- Fire map loaded event even if raster tiles have errors
- Fix panning animation during easeTo with zoom change
- Fix pitching animation during flyTo
- Fix pitching animation during easeTo
- Prevent rotation from firing
mouseend
events (#1104)
- Fire
mousedown
andmouseup
events (#1411) - Fire
movestart
andmoveend
when panning (#1658) - Added drag events (#1442)
- Request webp images for mapbox:// raster tiles in chrome (#1725)
- Added inertia to map rotation (#620)
- Fix alpha blending of alpha layers (#1684)
- Fix GeoJSON rendering and performance (#1685)
- Use SVG assets for UI controls (#1657)
- Zoom out with shift + dblclick (#1666)
- Misc performance improvements
- Fix sprites on systems with non-integer
devicePixelRatio
s (#1029 #1475 #1476) - Fix layer minZoom being ignored if not less than source maxZoom
- Fix symbol placement at the start of a line (#1461)
- Fix
raster-opacity
on non-tile sources (#1270) - Ignore boxzoom on shift-click (#1655)
- Enable line breaks on common punctuation (#1115)
- Add toString and toArray methods to LngLat, LngLatBounds (#1571)
- Add
Transform#resize
method - Add
Map#getLayer
method (#1183) - Add
Transform#unmodified
property (#1452) - Propagate WebGL context events (#1612)
- Add statistics and checkboxes to debug page
- Fix
Map#featuresAt
for non-4096 vector sources (#1529) - Don't fire
mousemove
on drag-pan - Fix maxBounds constrains (#1539)
- Fix maxBounds infinite loop (#1538)
- Fix memory leak in worker
- Assert valid
TileCoord
, fix wrap calculation inTileCoord#cover
(#1483) - Abort raster tile load if not in viewport (#1490)
- Add
Map
event listeners formouseup
,contextmenu
(right click) (#1532)
- Add
Map#featuresIn
: a bounding-box feature query - Emit stylesheet validation errors (#1436)
- Handle v8 style
center
,zoom
,bearing
,pitch
(#1452) - Improve circle type styling (#1446)
- Improve dashed and patterned line antialiasing
- Load images in a way that respects Cache-Control headers
- Filter for rtree matches to those crossing bbox
- Log errors by default (#1463)
- Fixed modification of
text-size
viasetLayoutProperty
(#1451) - Throw on lat > 90 || < -90. (#1443)
- Fix circle clipping bug (#1457)
-
Switched to [longitude, latitude] coordinate order, matching GeoJSON. We anticipate that mapbox-gl-js will be widely used with GeoJSON, and in the long term having a coordinate order that is consistent with GeoJSON will lead to less confusion and impedance mismatch than will a [latitude, longitude] order.
The following APIs were renamed:
LatLng
was renamed toLngLat
LatLngBounds
was renamed toLngLatBounds
Popup#setLatLng
was renamed toPopup#setLngLat
Popup#getLatLng
was renamed toPopup#getLngLat
- The
latLng
property of Map events was renamedlngLat
The following APIs now expect array coordinates in [longitude, latitude] order:
LngLat.convert
LngLatBounds.convert
Popup#setLngLat
- The
center
andmaxBounds
options of theMap
constructor - The arguments to
Map#setCenter
,Map#fitBounds
,Map#panTo
, andMap#project
- The
center
option ofMap#jumpTo
,Map#easeTo
, andMap#flyTo
- The
around
option ofMap#zoomTo
,Map#rotateTo
, andMap#easeTo
- The
coordinates
properties of video and image sources
-
Updated to mapbox-gl-style-spec v8.0.0 (Changelog). Styles are now expected to be version 8. You can use the gl-style-migrate utility to update existing styles.
-
The format for
mapbox://
style and glyphs URLs has changed. For style URLs, you should now use the formatmapbox://styles/:username/:style
. The:style
portion of the URL no longer contains a username. For font URLs, you should now use the formatmapbox://fonts/:username/{fontstack}/{range}.pbf
. -
Mapbox default styles are now hosted via the Styles API rather than www.mapbox.com. You can make use of the Styles API with a
mapbox://
style URL pointing to a v8 style, e.g.mapbox://styles/mapbox/streets-v8
. -
The v8 satellite style (
mapbox://styles/mapbox/satellite-v8
) is now a plain satellite style, and not longer supports labels or contour lines via classes. For a labeled satellite style, usemapbox://styles/mapbox/satellite-hybrid
. -
Removed
mbgl.config.HTTP_URL
andmbgl.config.FORCE_HTTPS
; https is always used when connecting to the Mapbox API. -
Renamed
mbgl.config.HTTPS_URL
tombgl.config.API_URL
.
- Don't draw halo when halo-width is 0 (#1381)
- Reverted shader changes that degraded performance on IE
- You can now unset layout and paint properties via the
setLayoutProperty
andsetPaintProperty
APIs by passingundefined
as a property value. - The
layer
option offeaturesAt
now supports an array of layers.
-
glyphs
URL now normalizes without the/v4/
prefix formapbox://
urls. Legacy behavior formapbox://fontstacks
is still maintained (#1385) -
Expose
geojson-vt
options for GeoJSON sources (#1271) -
bearing snaps to "North" within a tolerance of 7 degrees (#1059)
-
Now you can directly mutate the minzoom and maxzoom layer properties with
map.setLayerZoomRange(layerId, minzoom, maxzoom)
-
Exposed
mapboxgl.Control
, a base class used by all UI controls -
Refactored handlers to be individually included in Map options, or enable/disable them individually at runtime, e.g.
map.scrollZoom.disable()
. -
New feature: Batch operations can now be done at once, improving performance for calling multiple style functions: (#1352)
style.batch(function(s) { s.addLayer({ id: 'first', type: 'symbol', source: 'streets' }); s.addLayer({ id: 'second', type: 'symbol', source: 'streets' }); s.addLayer({ id: 'third', type: 'symbol', source: 'terrain' }); s.setPaintProperty('first', 'text-color', 'black'); s.setPaintProperty('first', 'text-halo-color', 'white'); });
-
Improved documentation
-
featuresAt
performance improvements by exposingincludeGeometry
option -
Better label placement along lines (#1283)
-
Improvements to round linejoins on semi-transparent lines (mapbox/mapbox-gl-native#1771)
-
Round zoom levels for raster tile loading (2a2aec)
-
Source#reload cannot be called if source is not loaded (#1198)
-
Events bubble to the canvas container for custom overlays (#1301)
-
Move handlers are now bound on mousedown and touchstart events
-
map.featuresAt() now works across the dateline
- No code changes; released only to correct a build issue in 0.8.0.
-
map.setView(latlng, zoom, bearing)
has been removed. Usemap.jumpTo(options)
instead:map.setView([40, -74.50], 9) // 0.7.0 or earlier map.jumpTo({center: [40, -74.50], zoom: 9}); // now
-
map.easeTo
andmap.flyTo
now accept a single options object rather than positional parameters:map.easeTo([40, -74.50], 9, null, {duration: 400}); // 0.7.0 or earlier map.easeTo({center: [40, -74.50], zoom: 9, duration: 400}); // now
-
mapboxgl.Source
is no longer exported. Usemap.addSource()
instead. See the GeoJSON line or GeoJSON markers examples. -
mapboxgl.util.supported()
moved tomapboxgl.supported()
.
- Add perspective rendering (#1049)
- Better and faster labelling (#1079)
- Add touch interactions support on mobile devices (#949)
- Viewport-relative popup arrows (#1065)
- Normalize mousewheel zooming speed (#1060)
- Add proper handling of GeoJSON features that cross the date line (#1275)
- Sort overlapping symbols in the y direction (#470)
- Control buttons are now on a 30 pixel grid (#1143)
- Improve GeoJSON processing performance
- Switch to JSDoc for documentation
- Bundling with browserify is now supported
- Validate incoming map styles (#1054)
- Add
Map
setPitch
getPitch
- Add
Map
dblclick
event. (#1168) - Add
Map
getSource
(660a8c1) - Add
Map
setFilter
andgetFilter
(#985) - Add
Map
failIfMajorPerformanceCaveat
option (#1082) - Add
Map
preserveDrawingBuffer
option (#1232) - Add
VideoSource
getVideo()
(#1162) - Support vector tiles with extents other than 4096 (#1227)
- Use a DOM hierarchy that supports evented overlays (#1217)
- Pass
latLng
to the event object (#1068)
- Fix rendering glitch on iOS 8 (#750)
- Fix line triangulation errors (#1120, #992)
- Support unicode range 65280-65535 (#1108)
- Fix cracks between fill patterns (#972)
- Fix angle of icons aligned with lines (37a498a)
- Fix dashed line bug for overscaled tiles (#1132)
- Fix icon artifacts caused by sprite neighbors (#1195)
- Don't fire spurious
moveend
events on mouseup (#1107) - Fix a race condition in
featuresAt
(#1220) - Fix for brittle fontstack name convention (#1070)
- Fix broken
Popup
setHTML
(#1272) - Fix an issue with cross-origin image requests (#1269)
- Rename
Map
hover
event tomousemove
. - Change
featuresAt
to return GeoJSON objects, including geometry (#1010) - Remove
Map
canvas
andcontainer
properties, addgetCanvas
andgetContainer
methods instead
- Improve line label density
- Add boxzoom interaction (#1038)
- Add keyboard interaction (#1034)
- Faster
GeoJSONSource
setData
without flickering (#973)
- Add Popup component (#325)
- Add layer API (#1022)
- Add filter API (#985)
- More efficient filter API (#1018)
- Accept plain old JS object for
addSource
(#1021) - Reparse overscaled tiles
- Fix
featuresAt
for LineStrings (#1006) - Fix
tileSize
argument toGeoJSON
worker (#987) - Remove extraneous files from the npm package (#1024)
- Hide "improve map" link in print (#988)
- Add wrapped padding to sprite for repeating images (#972)
- Clear color buffers before rendering (#966)
- Make line-opacity work with line-image (#970)
- event.toElement fallback for Firefox (#932)
- skip duplicate vertices at ends of lines (#776)
- allow characters outside \w to be used in token
- Clear old tiles when new GeoJSON is loaded (#905)
- Added
map.setPaintProperty()
,map.getPaintProperty()
,map.setLayoutProperty()
, andmap.getLayoutProperty()
. - Switch to ESLint and more strict code rules (#957)
- Grab 2x raster tiles if retina (#754)
- Support for mapbox:// style URLs (#875)
- Updated to mapbox-gl-style-spec v7.0.0 (Changelog). Styles are now expected to be version 7. You can use the gl-style-migrate utility to update existing styles.
- HTTP_URL and HTTPS_URL config options must no longer include a
/v4
path prefix. addClass
,removeClass
,setClasses
,hasClass
, andgetClasses
are now methods on Map.Style#cascade
is now private, pending a public style mutation API (#755).- The format for
featuresAt
results changed. Instead of result-per-geometry-cross-layer, each result has alayers
array with all layers that contain the feature. This avoids duplication of geometry and properties in the result set.
- Remove tiles for unused sources (#863)
- Fix fill pattern alignment
- Add GeoJSONSource maxzoom option (#760)
- Return ref layers in featuresAt (#847)
- Return any extra layer keys provided in the stylesheet in featuresAt
- Faster protobuf parsing
- Fix race conditions with style loading/rendering
- Fix race conditions with setStyle
- Fix map.remove()
- Fix featuresAt properties
- Fix multiple calls to setStyle
featuresAt
now returns additional information- Complete style/source/tile event suite: style.load, style.error, style.change, source.add, source.remove, source.load, source.error, source.change, tile.add, tile.remove, tile.load, tile.error
- Vastly improved performance and correctness for GeoJSON sources
- Map#setStyle accepts a style URL
- Support {prefix} in tile URL templates
- Provide a source map with minified source
- Results format for
featuresAt
changed
- Ensure only one easing is active at a time (#807)
- Don't require style to perform easings (#817)
- Fix raster tiles sometimes not showing up (#761)
- Internet Explorer 11 support (experimental)
- Interpolate to the closest bearing when doing rotation animations (#818)
- Updated to mapbox-gl-style-spec v6.0.0 (Changelog). Styles are now expected to be version 6. You can use the gl-style-migrate utility to update existing styles.
- Fix worker initialization with deferred or async scripts
- Added map.remove()
- CDN assets are now served with gzip compression
- Fixed iteration over arrays with for/in
- Made browserify deps non-dev (#752)
- Updated to mapbox-gl-style-spec v0.0.5 (Changelog). Styles are now expected to be version 5. You can use the gl-style-migrate utility to update existing styles.
- Removed support for composite layers for performance reasons. #523
raster-hue-rotate
units are now degrees.
- Added LatLng#wrap
- Added support for Mapbox fontstack API.
- Added support for remote, non-Mapbox TileJSON sources and inline TileJSON sources (#535, #698).
- Added support for
symbol-avoid-edges
property to allow labels to be placed across tile edges. - Fixed mkdir issue on Windows (#674).
- Fixed drawing beveled line joins without overlap.
- Fixed performance when underzooming a layer's minzoom.
- Fixed
raster-opacity
for regular raster layers. - Fixed various corner cases of easing functions.
- Do not modify original stylesheet (#728).
- Inherit video source from source (#699).
- Fixed interactivity for geojson layers.
- Stop dblclick on navigation so the map does not pan (#715).
map.setBearing()
no longer supports a second argument. Usemap.rotateTo
with anoffset
option and duration 0 if you need to rotate around a point other than the map center.
- Improved
GeoJSONSource
to also accept URL asdata
option, eliminating a huge performance bottleneck in case of large GeoJSON files. #669 #671 - Switched to a different fill outlines rendering approach. #668
- Made the minified build 12% smaller gzipped (66 KB now).
- Added
around
option toMap
zoomTo
/rotateTo
. - Made the permalink hash more compact.
- Bevel linejoins no longer overlap and look much better when drawn with transparency.
- Fixed the broken minified build. #679
- Fixed blurry icons rendering. #666
- Fixed
util.supports
WebGL detection producing false positives in some cases. #677 - Fixed invalid font configuration completely blocking tile rendering. #662
- Fixed
Map
project
/unproject
to properly accept array-form values. - Fixed sprite loading race condition. #593
- Fixed
GeoJSONSource
setData
not updating the map until zoomed or panned. #676
- Changed
Navigation
control signature: now it doesn't needmap
in constructor and gets added withmap.addControl(nav)
ornav.addTo(map)
. - Updated CSS classes to have consistent naming prefixed with
mapboxgl-
.
- Added attribution control (present by default, disable by passing
attributionControl: false
in options). - Added rotation by dragging the compass control.
- Added grabbing cursors for the map by default.
- Added
util.inherit
andutil.debounce
functions. - Changed the default debug page style to OSM Bright.
- Token replacements now support dashes.
- Improved navigation control design.
- Fixed compass control to rotate its icon with the map.
- Fixed navigation control cursors.
- Fixed inertia going to the wrong direction in a rotated map.
- Fixed inertia race condition where error was sometimes thrown after erratic panning/zooming.
- First public release.