From b65c6ea80badddb59b467ac74d3f1b1089d41ca5 Mon Sep 17 00:00:00 2001
From: tv <tv@krebsco.de>
Date: Mon, 7 Dec 2020 13:36:16 +0100
Subject: Mapbox.Source: encode id

---
 src/Mapbox/Source.elm | 22 ++++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

(limited to 'src/Mapbox/Source.elm')

diff --git a/src/Mapbox/Source.elm b/src/Mapbox/Source.elm
index 5ca38ea..068e7f7 100644
--- a/src/Mapbox/Source.elm
+++ b/src/Mapbox/Source.elm
@@ -278,7 +278,13 @@ The first argument is the layers id, the second is a url to a [TileJSON specific
 -}
 vectorFromUrl : Id -> Url -> Source
 vectorFromUrl id url =
-    Source id (Json.Encode.object [ ( "type", Json.Encode.string "vector" ), ( "url", Json.Encode.string url ) ])
+    Source id
+        (Json.Encode.object
+            [ ( "type", Json.Encode.string "vector" )
+            , ( "url", Json.Encode.string url )
+            , ( "id", Json.Encode.string id )
+            ]
+        )
 
 
 {-| A vector tile source. Tiles must be in [Mapbox Vector Tile format](https://www.mapbox.com/developers/vector-tiles/). All geometric coordinates in vector tiles must be between `-1 * extent` and `(extent * 2) - 1` inclusive. All layers that use a vector source must specify a `sourceLayer` value.
@@ -290,6 +296,7 @@ vector : Id -> List Url -> List (SourceOption VectorSource) -> Source
 vector id urls options =
     ( "tiles", Json.Encode.list Json.Encode.string urls )
         :: ( "type", Json.Encode.string "vector" )
+        :: ( "id", Json.Encode.string id )
         :: List.map (\(SourceOption k v) -> ( k, v )) options
         |> Json.Encode.object
         |> Source id
@@ -299,7 +306,13 @@ vector id urls options =
 -}
 rasterFromUrl : Id -> Url -> Source
 rasterFromUrl id url =
-    Source id (Json.Encode.object [ ( "type", Json.Encode.string "raster" ), ( "url", Json.Encode.string url ) ])
+    Source id
+        (Json.Encode.object
+            [ ( "type", Json.Encode.string "raster" )
+            , ( "url", Json.Encode.string url )
+            , ( "id", Json.Encode.string id )
+            ]
+        )
 
 
 {-| A raster tile source. Takes a list of one or more tile source URLs, as in the TileJSON spec.
@@ -308,6 +321,7 @@ raster : Id -> List Url -> List (SourceOption RasterSource) -> Source
 raster id urls options =
     ( "tiles", Json.Encode.list Json.Encode.string urls )
         :: ( "type", Json.Encode.string "raster" )
+        :: ( "id", Json.Encode.string id )
         :: List.map (\(SourceOption k v) -> ( k, v )) options
         |> Json.Encode.object
         |> Source id
@@ -322,6 +336,7 @@ rasterDEMMapbox id =
             [ ( "type", Json.Encode.string "raster-dem" )
             , ( "url", Json.Encode.string "mapbox://mapbox.terrain-rgb" )
             , ( "encoding", Json.Encode.string "mapbox" )
+            , ( "id", Json.Encode.string id )
             ]
         )
 
@@ -333,6 +348,7 @@ rasterDEMTerrarium id url options =
     ( "type", Json.Encode.string "raster-dem" )
         :: ( "url", Json.Encode.string url )
         :: ( "encoding", Json.Encode.string "terrarium" )
+        :: ( "id", Json.Encode.string id )
         :: List.map (\(SourceOption k v) -> ( k, v )) options
         |> Json.Encode.object
         |> Source id
@@ -344,6 +360,7 @@ geoJSONFromUrl : Id -> Url -> List (SourceOption GeoJSONSource) -> Source
 geoJSONFromUrl id url options =
     ( "data", Json.Encode.string url )
         :: ( "type", Json.Encode.string "geojson" )
+        :: ( "id", Json.Encode.string id )
         :: List.map (\(SourceOption k v) -> ( k, v )) options
         |> Json.Encode.object
         |> Source id
@@ -355,6 +372,7 @@ geoJSONFromValue : Id -> List (SourceOption GeoJSONSource) -> Value -> Source
 geoJSONFromValue id options data =
     ( "data", data )
         :: ( "type", Json.Encode.string "geojson" )
+        :: ( "id", Json.Encode.string id )
         :: List.map (\(SourceOption k v) -> ( k, v )) options
         |> Json.Encode.object
         |> Source id
-- 
cgit v1.2.3