diff --git "a/API Adresse- og eiendomss\303\270k/README.md" "b/API Adresse- og eiendomss\303\270k/README.md"
new file mode 100644
index 0000000..f886167
--- /dev/null
+++ "b/API Adresse- og eiendomss\303\270k/README.md"
@@ -0,0 +1,70 @@
+# API-Adresse- og eiendomssøk
+
+### Introduction
+API-Adresse- og eiendomssøk is a REST API designed for accurate and rapid searches across multiple data sources in Norway. The service provides updated information from Norkart's synchronized copy of the land register and property register, with a maximum delay of one day.
+
+
+Implementation of the Adresse- og eiendomssøk API to enable interactive address and property search with a map.
+
+### Main Functionality
+- **Autocomplete Search**: Provides immediate responses based on the entered search text. Not designed to handle typos.
+- **Fuzzy Search**: Allows simple typos, offering greater flexibility.
+- **Geocoding**: Validates addresses and provides details about the accuracy of the results.
+- **Reverse Geocoding**: Searches for data sources based on geographical coordinates.
+
+### Data Sources
+Searches can be performed against several data sources:
+- **Norkart's synchronized copy of the land register and property register (Kartverket)**:
+ - Street addresses and streets
+ - Properties (Land units): Current and expired
+ - Owners: Organizations and individuals
+- **Central Place Name Register (SSR)**: Place names
+- **Other copies of data from Kartverket**: Postal zones
+
+### Handling Geographical Information
+The service returns data in JSON format. For geographical information, the GeoJSON standard is used with coordinates in WGS4 (EPSG:4326). Users can specify other input and output coordinate systems.
+
+### Technical Documentation
+The service is documented through Norkart's documentation portal, ensuring user-friendliness and efficient integration by testing various endpoints. Swagger/Open API documentation is available upon request.
+
+### Subscription Requirement
+Please note that this service requires a subscription. For inquiries, you can contact us here: [Norkart Customer Support](https://www.norkart.no/kundestotte).
+
+### API Examples
+- **Autocomplete**: It is recommended to use the `/suggest/kommunecustom` endpoint for addresses.
+- **Search for more information**: Use the `/search/kommunecustom` endpoint for more detailed information, with support for fuzzy searches.
+
+#### Example Request
+```http
+GET https://fritekstsok.api.norkart.no/suggest/kommunecustom?targets=gateadresse&Query=Oslo&Size=1&api_key={{YOUR_API_KEY}}
+Example Response
+{
+ "Options": [
+ {
+ "Id": "0301154490001000A000",
+ "Type": "gateadresse",
+ "Text": "Oslo gate 1A, Oslo",
+ "Score": 2.10001e+09,
+ "Url": "https://fritekstsok.api.norkart.no/data/matrikkel/adresse/gateadresse/0301154490001000A000",
+ "PayLoad": {
+ "__type": "WAAPI.FritekstSok.ServiceModel.Types.GateAdressePayLoad, WAAPI.FritekstSok.ServiceModel",
+ "AdresseMatrikkelNummer": "03010023400470000000",
+ "Text": "Oslo gate 1A, Oslo",
+ "AdresseId": "0301154490001000A000",
+ "VegAdresseId": "0301154490001A",
+ "Posisjon": {
+ "X": 10.767611078632482,
+ "Y": 59.90835931871215,
+ "SRS": 4326
+ },
+ "PostNummer": "0192",
+ "PostSted": "OSLO"
+ },
+ "LevenshteinScore": 14,
+ "ExactMatches": 2
+ }
+ ],
+ "TotalHits": 46,
+ "SRS": 4326
+}
+The URL field in the response provides access to more detailed information about the address.
\ No newline at end of file
diff --git "a/API Adresse- og eiendomss\303\270k/images/Sok_Produktbeskrivelse-D8mOVPYT.png" "b/API Adresse- og eiendomss\303\270k/images/Sok_Produktbeskrivelse-D8mOVPYT.png"
new file mode 100644
index 0000000..403c1cd
Binary files /dev/null and "b/API Adresse- og eiendomss\303\270k/images/Sok_Produktbeskrivelse-D8mOVPYT.png" differ
diff --git a/API Bakgrunnskart/README.md b/API Bakgrunnskart/README.md
new file mode 100644
index 0000000..8baa8b9
--- /dev/null
+++ b/API Bakgrunnskart/README.md
@@ -0,0 +1,59 @@
+# Norkart API Bakgrunnskart Documentation
+
+Welcome to the documentation for Norkart API Bakgrunnskart. This service collects the most commonly used background maps needed to create a map service. This service provides access to background maps using both Tile Map Service (TMS) and Web Map Service (WMS). Below are the available map layers in this API:
+
+
+| Tjenestenavn | Type | Description | url |
+| ------------- | ------------- | ------------- | ------------- |
+| **Maptiles** | TMS | Base map using tile service| https://waapi.webatlas.no/maptiles/{tileset}/{z}/{x}/{y}.jpeg?APITOKEN={{API_KEY}}|
+| **WMS-STANDARKART** | WMS | Base map using Web map service| https://waapi.webatlas.no/WMS-STANDARDKART/?APITOKEN={{API_KEY}}|
+| **WMS-VEKTOR-GRAY** | WMS | Grey tone base map | https://waapi.webatlas.no/WMS-VEKTOR-GRAY/?APITOKEN={{API_KEY}}|
+| **WMS-Orto** | WMS | Satellitte image base map (ortographic map) | https://waapi.webatlas.no/wms-orto/?APITOKEN={{API_KEY}}|
+
+
+
+|
Standard
|Grey scale
|Ortophoto
| +| ------------- | ------------- | ------------- | +|
|
|
|
+
+## Available maps (Tilesets) for TMS
+
+Several types of map are available through the TMS service by replacing the "tileset" parameter in the url. The available maps are listed bellow:
+
+```javascript
+options: {
+ url: '//waapi.webatlas.no/maptiles/tiles/{tileset}/wa_grid/{z}/{x}/{y}.{ext}?APITOKEN={apikey}',
+ tileset: {
+ vector: {tileset: 'webatlas-standard-vektor', ext: 'png'},
+ aerial: {tileset: 'webatlas-orto-newup', ext: 'jpeg'},
+ hybrid: {tileset: 'webatlas-standard-hybrid', ext: 'jpeg'},
+ grey: {tileset: 'webatlas-gray-vektor', ext: 'png'},
+ medium: {tileset: 'webatlas-medium-vektor', ext: 'png'},
+ lite: {tileset: 'webatlas-lite-vektor', ext: 'png'}
+ },
+}
+```
+
+## Authentication / API Key
+
+To use Norkart's map services, you will need an API key. API keys are provided on a business-to-business (B2B) basis. If you are interested in a demo or wish to request an API key, please contact us at [datatjenester@norkart.no](mailto:datatjenester@norkart.no).
+
+Once you have an API key, include it in your requests as a URL parameter. For example:
+
+```bash
+https://waapi.webatlas.no/maptiles/{tileset}/{z}/{x}/{y}.jpeg?APITOKEN={{API_KEY}}
+````
+Replace {{API_KEY}} with your actual API key.
+
+### Introducing TMS and WMS
+#### What is Tile Map Service (TMS)?
+Tile Map Service (TMS) is a standard protocol for serving maps as small image tiles. Norkart's TMS offers high-performance delivery of map tiles in XYZ format. This is ideal for rendering fast, responsive maps on web or mobile applications. You can integrate TMS into various platforms, including web frameworks like Leaflet, OpenLayers, and Mapbox, as well as desktop GIS applications.For detailed information on how to use TMS in your applications, see the [TMS subsection](../Articles/TMS/README.md).
+
+#### What is Web Map Service (WMS)?
+Web Map Service (WMS) is a standard protocol for requesting map images dynamically from a server. Norkart’s WMS allows users to retrieve map images in various formats (such as JPEG, PNG) and customize the rendering by specifying parameters like bounding box, zoom level, and layers. WMS is highly flexible and can be integrated into web mapping frameworks or desktop GIS systems such as QGIS and ArcGIS. For more on how to use WMS services, see the [WMS subsection](../Articles/WMS/README.md).
+
+##### Integration Guides #####
+We provide detailed guides on how to integrate our services into various systems such as QGIS, Leaflet.js, and other GIS software.
+
+
+For additional help or support regarding API access or integration, reach out to [datatjenester@norkart.no](mailto:datatjenester@norkart.no).
\ No newline at end of file
diff --git "a/API Bakgrunnskart/images/Gr\303\245kart.png" "b/API Bakgrunnskart/images/Gr\303\245kart.png"
new file mode 100644
index 0000000..f945dbc
Binary files /dev/null and "b/API Bakgrunnskart/images/Gr\303\245kart.png" differ
diff --git a/API Bakgrunnskart/images/Ortofoto.png b/API Bakgrunnskart/images/Ortofoto.png
new file mode 100644
index 0000000..344d2fd
Binary files /dev/null and b/API Bakgrunnskart/images/Ortofoto.png differ
diff --git a/API Bakgrunnskart/images/Standardkart.png b/API Bakgrunnskart/images/Standardkart.png
new file mode 100644
index 0000000..5582930
Binary files /dev/null and b/API Bakgrunnskart/images/Standardkart.png differ
diff --git a/API-matrikkelkart/README.md b/API Eiendomsdata/README.md
similarity index 97%
rename from API-matrikkelkart/README.md
rename to API Eiendomsdata/README.md
index 0e8f34f..c7fdc31 100644
--- a/API-matrikkelkart/README.md
+++ b/API Eiendomsdata/README.md
@@ -1,6 +1,6 @@
-# API-Matrikkelkart
+# API Eiendomsdata
-MatrikkelKart API exposes geographic information about Matrikkelenheter and Teiger. (Matrikkel is the Norwegian cadaster system)
+API Eiendomsdata exposes geographic information about Matrikkelenheter and Teiger. (Matrikkel is the Norwegian cadaster system)
## Example: Get matrikkel information by coordinate
To get matrikkel information for the a point with coordinates: latitude: 63.4267428, longitude: 10.3981875
@@ -10,7 +10,6 @@ To get matrikkel information for the a point with coordinates: latitude: 63.4267
```
GET
https://matrikkelkart.api.norkart.no/teig/punkt?X=10.3981875&Y=63.4267428&api_key=${{YOUR_API_KEY}}&GeometryTextFormat=GeoJson
-
```
### Responses
diff --git "a/API Takgeometri og solinnstr\303\245ling/README.md" "b/API Takgeometri og solinnstr\303\245ling/README.md"
new file mode 100644
index 0000000..8b792b2
--- /dev/null
+++ "b/API Takgeometri og solinnstr\303\245ling/README.md"
@@ -0,0 +1,54 @@
+# WAAPI-Takflater
+
+WAAPI-Takflater provides comprehensive data about roof across Norway. This guide gives a brief overview to help developers integrate with this service.
+
+## Getting Started
+
+**React Example**: [React Demo](#) - Dive into a sample React application showcasing the use of WAAPI-Takflater API. *(Note: Please replace the `#` with the actual link to your React demo if available)*.
+
+### Key Endpoints
+
+#### 1. Rooftop Details by Coordinates
+- **Endpoint**: `/takflater/punkt`
+- **Method**: GET
+- **Parameters**: `Y` (North-coordinate), `X` (East-coordinate)
+- **Use Case**: Fetching rooftop details using specific geographical coordinates.
+
+#### 2. Extended Rooftop Details by Coordinates
+- **Endpoint**: `/takflater/punkt/utvidet`
+- **Method**: GET
+- **Parameters**: `Y` (North-coordinate), `X` (East-coordinate)
+- **Use Case**: Fetching a more detailed view of rooftop data.
+
+### Recommendations
+
+#### Suggest - Autocomplete
+
+While not directly a part of the WAAPI-Takflater, it's essential to use the `/suggest/kommunecustom` endpoint for autocomplete features. This endpoint is fast and optimized for real-time suggestions.
+
+#### Search - Detailed & Fuzzy Logic
+
+For a more detailed view or when you expect the user might have typos or slight variations in their input, use the `/search/kommunecustom` endpoint. It's slower than suggest but offers a 'fuzzy' search logic that's lenient with variations in the input.
+
+### Example: Fetching Rooftop Data by Coordinates
+
+**Request**:
+\```http
+GET https://takflater.api.norkart.no/takflater/punkt?Y=59.908&X=10.767&api_key={{YOUR_API_KEY}}
+\```
+
+**Response**:
+\```json
+{
+ "Id": 0,
+ "Objekttype": "string",
+ "ByggId": "string",
+ ...
+}
+\```
+
+Replace `{{YOUR_API_KEY}}` with your actual API key. The response provides a detailed breakdown of the rooftop based on the provided coordinates.
+
+### Further Reading
+
+For an in-depth understanding, refer to the [Swagger Documentation](#). *(Note: Replace `#` with the link to your Swagger docs)*.
diff --git a/API-datavarehus/MoreExamples/kumulesone_intersection.md b/API-datavarehus/MoreExamples/kumulesone_intersection.md
deleted file mode 100644
index 76888cc..0000000
--- a/API-datavarehus/MoreExamples/kumulesone_intersection.md
+++ /dev/null
@@ -1,68 +0,0 @@
-## Example: Intersection query on the kumulesone dataset.
-
-Parameters explanation:
-* ```shouldClip```: whether the output geom should be clipped based on input geom (true/false)
-* ```Geometry```: Request area. (geojson format)
-
-### Request
-Request type: ```POST```
-
-URL
-```
-https://datavarehus.api.norkart.no/v2/views/sv_norkart_2_kumuleflate/features/intersectionquery?api_key={{YOUR_API_KEY}}
-```
-BODY
-```json
-{
- "shouldClip": false,
- "Geometry": {
- "type": "Polygon",
- "coordinates": [
- [
- [
- 10.52106,
- 63.398276
- ],
- [
- 10.520416,
- 63.398199
- ],
- [
- 10.521028,
- 63.397848
- ],
- [
- 10.52106,
- 63.398276
- ]
- ]
- ]
- }
-}
-```
-
-### Response
-
-```json
-{
- "type": "FeatureCollection",
- "bbox": null,
- "features": [
- {
- "type": "Feature",
- "bbox": [
- 10.520307059205086,
- 63.39736820210165,
- 10.52329710191037,
- 63.39942685007544
- ],
- "geometry": <) to see practical implementations and learn how to use our APIs effectively.
-* [API-maptiles](API-maptiles)
-* [API-fritekstsok](API-fritekstsok)
-* [API-matrikkelkart](API-matrikkelkart)
-* [API-datavarehus](API-datavarehus)
+### API Documentation
+We provide detailed documentation for the following APIs:
-## About API's
-Norkarts services are mostly ```REST-services``` which support data-exchange in JSON.
+* [API Bakgrunnskart]()
+* [API Adresse- og eiendomssøk]()
+* [API Eiendomsdata]()
+* [API Datavarehus]()
+* [API Takgeometri og solinstråling]()
-## About Map Services
-There are two types of map services:
-- [Tile-Map-Services](API-maptiles) (```TMS```):
-- [Web-Map-Services](WMS) (```WMS```)
+## About Our APIs
+Norkart's services are primarily RESTful APIs that support data exchange in JSON format.
+### Map Services
+We offer two types of map services:
+- [Tile Map Services (TMS)](Articles/TMS/README.md)
+- [Web Map Services (WMS)](Articles/WMS/README.md)
-## Authentication / API key
-Authentication works in the same way for all services.
-- Example: ```https://fritekstsok.api.norkart.no/suggest/matrikkel/adresse?Query=Oslovei&api_key={{YOUR_API_KEY}}```
+## Authentication / API Key
+Authentication is consistent across all services. Include your API key as a URL parameter in your requests. For example:
+```bash
+https://fritekstsok.api.norkart.no/suggest/matrikkel/adresse?Query=Oslovei&api_key={{YOUR_API_KEY}}
+```
## Live Demos
-- [Norkart API Demo](https://mango-flower-0fd4d4b03.azurestaticapps.net/): Here you can see a minimalistic map application that uses maptiles, fritekstsøk and matrikkelkart APIs.
-
-Request API access [here](https://www.norkart.no/dataoganalyse/).
-
-
+Check out our [Norkart API Demo](https://mango-flower-0fd4d4b03.azurestaticapps.net/) to see a minimalistic map application that uses API Bakgrunnskart, API Adresse- og eiendomssøk, and API Eiendomsdata.
+## Request API Access
+To request API access, visit [Norkart Data and Analysis](https://www.norkart.no/dataoganalyse/).
\ No newline at end of file
diff --git a/code and tutorials/README.md b/code and tutorials/README.md
new file mode 100644
index 0000000..544b81a
--- /dev/null
+++ b/code and tutorials/README.md
@@ -0,0 +1,14 @@
+# Code examples and Tutorials for our API's
+
+The folders in this directory contains tutorials and code examples demonstrating use of our API's.
+
+## About the Tutorials
+
+Code | Description | |
+--- | --- | ---
+[Maptiles Leaflet.js](<./getting started - maptiles in mapbox.gl/README.md>) | Demonstrates the use of Norkart's maptiles with leaflet.js. | [Live Demo](https://codepen.io/alexanno/pen/EzrjEb)
+[Maptiles Mapbox.gl](<./getting%20started%20-%20maptiles%20in%20mapbox.gl/README.md>) | Demonstrates the use of Norkart's maptiles with mapbox | [Live Demo](https://codepen.io/alexanno/pen/NWRpYER)
+[Use of leaflet-webatlastile](<./leaflet-webatlastiles-js/README.md>) | Shows how to use the leaflet-webatlastile to add Norkart's maptiles to Leaflet. Uses the Parcel bundler.
+[React Example](<./reactleaflet_fritekstsok_maptiles_matrikkelkart_example/README.md>) | Shows an example of using Norkart's maptiles, search and 'matrikkelkart' APIs in a simple React application. The example is written in typescript and uses recoil, react-leaflet and material-ui libraries. | [Live Demo](https://mango-flower-0fd4d4b03.azurestaticapps.net/)
+[Use of Cesium and Leaflet](<./cesium-and-leaflet-example/README.md>) | Shows how to use Cesium and Leaflet, and how to swich between the map views in React.
+
diff --git a/code_and_tutorials/cesium-and-leaflet-example/.gitignore b/code and tutorials/cesium-and-leaflet-example/.gitignore
similarity index 100%
rename from code_and_tutorials/cesium-and-leaflet-example/.gitignore
rename to code and tutorials/cesium-and-leaflet-example/.gitignore
diff --git a/code_and_tutorials/cesium-and-leaflet-example/README.md b/code and tutorials/cesium-and-leaflet-example/README.md
similarity index 100%
rename from code_and_tutorials/cesium-and-leaflet-example/README.md
rename to code and tutorials/cesium-and-leaflet-example/README.md
diff --git a/code_and_tutorials/cesium-and-leaflet-example/babel.config.json b/code and tutorials/cesium-and-leaflet-example/babel.config.json
similarity index 94%
rename from code_and_tutorials/cesium-and-leaflet-example/babel.config.json
rename to code and tutorials/cesium-and-leaflet-example/babel.config.json
index fb0a288..ffff0d2 100644
--- a/code_and_tutorials/cesium-and-leaflet-example/babel.config.json
+++ b/code and tutorials/cesium-and-leaflet-example/babel.config.json
@@ -1,10 +1,10 @@
-{
- "presets": [
- "@babel/preset-env",
- "@babel/preset-react",
- "@babel/preset-typescript"
- ],
- "babelrcRoots": ["*"],
- "plugins": []
- }
+{
+ "presets": [
+ "@babel/preset-env",
+ "@babel/preset-react",
+ "@babel/preset-typescript"
+ ],
+ "babelrcRoots": ["*"],
+ "plugins": []
+ }
\ No newline at end of file
diff --git a/code_and_tutorials/cesium-and-leaflet-example/index.html b/code and tutorials/cesium-and-leaflet-example/index.html
similarity index 100%
rename from code_and_tutorials/cesium-and-leaflet-example/index.html
rename to code and tutorials/cesium-and-leaflet-example/index.html
diff --git a/code_and_tutorials/cesium-and-leaflet-example/package-lock.json b/code and tutorials/cesium-and-leaflet-example/package-lock.json
similarity index 100%
rename from code_and_tutorials/cesium-and-leaflet-example/package-lock.json
rename to code and tutorials/cesium-and-leaflet-example/package-lock.json
diff --git a/code_and_tutorials/cesium-and-leaflet-example/package.json b/code and tutorials/cesium-and-leaflet-example/package.json
similarity index 100%
rename from code_and_tutorials/cesium-and-leaflet-example/package.json
rename to code and tutorials/cesium-and-leaflet-example/package.json
diff --git a/code_and_tutorials/cesium-and-leaflet-example/src/App.tsx b/code and tutorials/cesium-and-leaflet-example/src/App.tsx
similarity index 100%
rename from code_and_tutorials/cesium-and-leaflet-example/src/App.tsx
rename to code and tutorials/cesium-and-leaflet-example/src/App.tsx
diff --git a/code_and_tutorials/cesium-and-leaflet-example/src/components/Cesium/CameraPosition.tsx b/code and tutorials/cesium-and-leaflet-example/src/components/Cesium/CameraPosition.tsx
similarity index 97%
rename from code_and_tutorials/cesium-and-leaflet-example/src/components/Cesium/CameraPosition.tsx
rename to code and tutorials/cesium-and-leaflet-example/src/components/Cesium/CameraPosition.tsx
index 377267d..c2f8edf 100644
--- a/code_and_tutorials/cesium-and-leaflet-example/src/components/Cesium/CameraPosition.tsx
+++ b/code and tutorials/cesium-and-leaflet-example/src/components/Cesium/CameraPosition.tsx
@@ -1,53 +1,53 @@
-import React from "react";
-import {useCesium} from 'resium';
-import {Camera} from 'cesium';
-import {Rectangle, Math} from 'cesium';
-import L from 'leaflet';
-import {useEffect} from 'react';
-
-interface Props {
- initialBounds?: L.LatLngBounds;
- onBoundsChange?: (bounds: L.LatLngBounds) => void;
-}
-
-const toExtent = (bounds: L.LatLngBounds) =>
- new Rectangle(
- Math.toRadians(bounds.getSouthWest().lng),
- Math.toRadians(bounds.getSouthWest().lat),
- Math.toRadians(bounds.getNorthEast().lng),
- Math.toRadians(bounds.getNorthEast().lat)
- );
-
-const getBounds = (camera: Camera | undefined) => {
- if(camera){
- const viewRectangle = camera.computeViewRectangle();
- if(viewRectangle){
- const southWest = L.latLng(Math.toDegrees(viewRectangle.south), Math.toDegrees(viewRectangle.west));
- const northEast = L.latLng(Math.toDegrees(viewRectangle.north), Math.toDegrees(viewRectangle.east));
- return L.latLngBounds(southWest, northEast);;
- }
- }
- const defaultLatLng = L.latLng({ lat: 63.426891, lng: 10.396416 });
- return L.latLngBounds(defaultLatLng, defaultLatLng);
-};
-
-export const CameraPosition: React.FC = (props) => {
- const context = useCesium();
- const {initialBounds, onBoundsChange } = props;
-
- useEffect(() => {
- if (context.camera && initialBounds) {
- context.camera.setView({
- destination: toExtent(initialBounds),
- orientation: {
- heading: 0.0,
- pitch: -Math.PI_OVER_TWO,
- roll: 0.0,
- },
- });
- context.camera.moveEnd.addEventListener(() => onBoundsChange && onBoundsChange(getBounds(context.camera)));
- }
- }, []);
- return ;
-};
+import React from "react";
+import {useCesium} from 'resium';
+import {Camera} from 'cesium';
+import {Rectangle, Math} from 'cesium';
+import L from 'leaflet';
+import {useEffect} from 'react';
+
+interface Props {
+ initialBounds?: L.LatLngBounds;
+ onBoundsChange?: (bounds: L.LatLngBounds) => void;
+}
+
+const toExtent = (bounds: L.LatLngBounds) =>
+ new Rectangle(
+ Math.toRadians(bounds.getSouthWest().lng),
+ Math.toRadians(bounds.getSouthWest().lat),
+ Math.toRadians(bounds.getNorthEast().lng),
+ Math.toRadians(bounds.getNorthEast().lat)
+ );
+
+const getBounds = (camera: Camera | undefined) => {
+ if(camera){
+ const viewRectangle = camera.computeViewRectangle();
+ if(viewRectangle){
+ const southWest = L.latLng(Math.toDegrees(viewRectangle.south), Math.toDegrees(viewRectangle.west));
+ const northEast = L.latLng(Math.toDegrees(viewRectangle.north), Math.toDegrees(viewRectangle.east));
+ return L.latLngBounds(southWest, northEast);;
+ }
+ }
+ const defaultLatLng = L.latLng({ lat: 63.426891, lng: 10.396416 });
+ return L.latLngBounds(defaultLatLng, defaultLatLng);
+};
+
+export const CameraPosition: React.FC = (props) => {
+ const context = useCesium();
+ const {initialBounds, onBoundsChange } = props;
+
+ useEffect(() => {
+ if (context.camera && initialBounds) {
+ context.camera.setView({
+ destination: toExtent(initialBounds),
+ orientation: {
+ heading: 0.0,
+ pitch: -Math.PI_OVER_TWO,
+ roll: 0.0,
+ },
+ });
+ context.camera.moveEnd.addEventListener(() => onBoundsChange && onBoundsChange(getBounds(context.camera)));
+ }
+ }, []);
+ return ;
+};
export default CameraPosition;
\ No newline at end of file
diff --git a/code_and_tutorials/cesium-and-leaflet-example/src/components/Cesium/CesiumMap.tsx b/code and tutorials/cesium-and-leaflet-example/src/components/Cesium/CesiumMap.tsx
similarity index 96%
rename from code_and_tutorials/cesium-and-leaflet-example/src/components/Cesium/CesiumMap.tsx
rename to code and tutorials/cesium-and-leaflet-example/src/components/Cesium/CesiumMap.tsx
index 2a88b0a..54644c1 100644
--- a/code_and_tutorials/cesium-and-leaflet-example/src/components/Cesium/CesiumMap.tsx
+++ b/code and tutorials/cesium-and-leaflet-example/src/components/Cesium/CesiumMap.tsx
@@ -1,20 +1,20 @@
-import React from "react";
-import MapControls from "../MapControls";
-import { Props } from '../MapOrchestrator';
-import CameraPosition from "./CameraPosition";
-import { CesiumViewer } from './CesiumViewer';
-
-export const CesiumMap: React.FC = (props) => {
- const {components, bounds, onBoundsChange} = props;
-
- return (
-
- {components && }
-
-
- );
-};
-export default CesiumMap;
+import React from "react";
+import MapControls from "../MapControls";
+import { Props } from '../MapOrchestrator';
+import CameraPosition from "./CameraPosition";
+import { CesiumViewer } from './CesiumViewer';
+
+export const CesiumMap: React.FC = (props) => {
+ const {components, bounds, onBoundsChange} = props;
+
+ return (
+
+ {components && }
+
+
+ );
+};
+export default CesiumMap;
diff --git a/code_and_tutorials/cesium-and-leaflet-example/src/components/Cesium/CesiumViewer.tsx b/code and tutorials/cesium-and-leaflet-example/src/components/Cesium/CesiumViewer.tsx
similarity index 96%
rename from code_and_tutorials/cesium-and-leaflet-example/src/components/Cesium/CesiumViewer.tsx
rename to code and tutorials/cesium-and-leaflet-example/src/components/Cesium/CesiumViewer.tsx
index da62c50..dd3b636 100644
--- a/code_and_tutorials/cesium-and-leaflet-example/src/components/Cesium/CesiumViewer.tsx
+++ b/code and tutorials/cesium-and-leaflet-example/src/components/Cesium/CesiumViewer.tsx
@@ -1,51 +1,51 @@
-import React, { ReactNode } from "react";
-import { Cesium3DTileset as CCesium3DTileset } from "cesium";
-import { Viewer, Cesium3DTileset } from "resium";
-import tilesetStyle from "./tilesetStyle";
-import terrainProvider from "./terrainprovider";
-import imageryProvider from "./imageryprovider";
-
-const houseTilesetUrl = process.env.REACT_APP_3D_TILES_PROVIDER_URL || "";
-
-export interface CleanViewerProps {
- children?: ReactNode | ReactNode[];
-}
-
-export const CesiumViewer: React.FC = (props) => {
- const handleTilesReady = (tileset: CCesium3DTileset) => {
- tileset.luminanceAtZenith = 0.5;
- tileset.style = tilesetStyle
- };
-
- return (
- <>
-
-
- {props.children}
-
-
- >
- );
+import React, { ReactNode } from "react";
+import { Cesium3DTileset as CCesium3DTileset } from "cesium";
+import { Viewer, Cesium3DTileset } from "resium";
+import tilesetStyle from "./tilesetStyle";
+import terrainProvider from "./terrainprovider";
+import imageryProvider from "./imageryprovider";
+
+const houseTilesetUrl = process.env.REACT_APP_3D_TILES_PROVIDER_URL || "";
+
+export interface CleanViewerProps {
+ children?: ReactNode | ReactNode[];
+}
+
+export const CesiumViewer: React.FC = (props) => {
+ const handleTilesReady = (tileset: CCesium3DTileset) => {
+ tileset.luminanceAtZenith = 0.5;
+ tileset.style = tilesetStyle
+ };
+
+ return (
+ <>
+
+
+ {props.children}
+
+
+ >
+ );
}
\ No newline at end of file
diff --git a/code_and_tutorials/cesium-and-leaflet-example/src/components/Cesium/imageryprovider.ts b/code and tutorials/cesium-and-leaflet-example/src/components/Cesium/imageryprovider.ts
similarity index 98%
rename from code_and_tutorials/cesium-and-leaflet-example/src/components/Cesium/imageryprovider.ts
rename to code and tutorials/cesium-and-leaflet-example/src/components/Cesium/imageryprovider.ts
index 33586a4..d2d2192 100644
--- a/code_and_tutorials/cesium-and-leaflet-example/src/components/Cesium/imageryprovider.ts
+++ b/code and tutorials/cesium-and-leaflet-example/src/components/Cesium/imageryprovider.ts
@@ -1,11 +1,11 @@
-import { TileMapServiceImageryProvider, WebMercatorTilingScheme } from 'cesium';
-
-const imageryProvider = new TileMapServiceImageryProvider({
- url: `${process.env.REACT_APP_TILE_MAP_SERVICE_IMAGERY_PROVIDER_URL}`,
- fileExtension: 'jpg',
- tilingScheme: new WebMercatorTilingScheme({}),
- maximumLevel: 20,
- credit:
- 'Norkart AS, Sentinel-2 cloudless – https://s2maps.eu by EOX IT Services GmbH (Contains modified Copernicus Sentinel data 2016 & 2017), Geovekst og kommunene',
-});
+import { TileMapServiceImageryProvider, WebMercatorTilingScheme } from 'cesium';
+
+const imageryProvider = new TileMapServiceImageryProvider({
+ url: `${process.env.REACT_APP_TILE_MAP_SERVICE_IMAGERY_PROVIDER_URL}`,
+ fileExtension: 'jpg',
+ tilingScheme: new WebMercatorTilingScheme({}),
+ maximumLevel: 20,
+ credit:
+ 'Norkart AS, Sentinel-2 cloudless – https://s2maps.eu by EOX IT Services GmbH (Contains modified Copernicus Sentinel data 2016 & 2017), Geovekst og kommunene',
+});
export default imageryProvider;
\ No newline at end of file
diff --git a/code_and_tutorials/cesium-and-leaflet-example/src/components/Cesium/terrainprovider.ts b/code and tutorials/cesium-and-leaflet-example/src/components/Cesium/terrainprovider.ts
similarity index 96%
rename from code_and_tutorials/cesium-and-leaflet-example/src/components/Cesium/terrainprovider.ts
rename to code and tutorials/cesium-and-leaflet-example/src/components/Cesium/terrainprovider.ts
index 64eb72d..0608e24 100644
--- a/code_and_tutorials/cesium-and-leaflet-example/src/components/Cesium/terrainprovider.ts
+++ b/code and tutorials/cesium-and-leaflet-example/src/components/Cesium/terrainprovider.ts
@@ -1,9 +1,9 @@
-import { CesiumTerrainProvider } from 'cesium';
-
-const terrainProvider = new CesiumTerrainProvider({
- url: `${process.env.REACT_APP_TERRAIN_PROVIDER_URL}`,
- requestVertexNormals: true,
- credit: undefined,
-});
-
+import { CesiumTerrainProvider } from 'cesium';
+
+const terrainProvider = new CesiumTerrainProvider({
+ url: `${process.env.REACT_APP_TERRAIN_PROVIDER_URL}`,
+ requestVertexNormals: true,
+ credit: undefined,
+});
+
export default terrainProvider;
\ No newline at end of file
diff --git a/code_and_tutorials/cesium-and-leaflet-example/src/components/Cesium/tilesetStyle.ts b/code and tutorials/cesium-and-leaflet-example/src/components/Cesium/tilesetStyle.ts
similarity index 98%
rename from code_and_tutorials/cesium-and-leaflet-example/src/components/Cesium/tilesetStyle.ts
rename to code and tutorials/cesium-and-leaflet-example/src/components/Cesium/tilesetStyle.ts
index dc378e5..c6c7341 100644
--- a/code_and_tutorials/cesium-and-leaflet-example/src/components/Cesium/tilesetStyle.ts
+++ b/code and tutorials/cesium-and-leaflet-example/src/components/Cesium/tilesetStyle.ts
@@ -1,39 +1,39 @@
-/* eslint-disable no-template-curly-in-string */
-import {Cesium3DTileStyle} from 'cesium';
-
-export default new Cesium3DTileStyle({
- defines: {
- is_roof: '${BuildingRoofSurface} !== undefined',
- is_wall: '${BuildingWallSurface} !== undefined',
- is_bolig: "${Building.function} === 'Bolig' || ${Building.function} === 'Fritidsbolig'",
- is_hytte: "${Building.class} === '161'",
- is_laave: "${Building.class} === '241'",
- is_veksthus: "${Building.class} === '243'",
- is_divlarge:
- "${Building.function} === 'Garasje uthus' || ${Building.function} === 'Fabrikk naering' || ${Building.function} ==='Landbruk fiske'|| ${Building.function} === 'Samferdsel'|| ${Building.function} === 'Udefinert'|| ${Building.function} === 'Kontor'|| ${Building.function} === 'Handel'|| ${Building.function} === 'Overnatting'|| ${Building.function} === 'Restaurant'|| ${Building.function} === 'Undervisning'|| ${Building.function} === 'Kultur'|| ${Building.function} === 'Idrett'|| ${Building.function} === 'Kirke'|| ${Building.function} === 'Helse'",
- glass_color: 'rgba(255*.4, 255*.4, 255*.5, .75)',
- roof_color: 'rgb(255*.3, 255*.3, 255*.3)',
- wall_color: 'rgb(255*.6, 255*.6, 255*.6)',
- barnred_color: 'rgb(255*.5, 255*.15, 255*.15)',
- tarbrown_color: 'rgb(255*.4, 255*.18, 255*.1)',
- darkgray_color: 'rgb(255*.3, 255*.3, 255*.3)',
- medgray_color: 'rgb(255*.5, 255*.5, 255*.5)',
- lightgray_color: 'rgb(255*.8, 255*.8, 255*.8)',
- },
- show: 'true',
- color: {
- conditions: [
- ['${is_veksthus}', '${glass_color}'],
- ['${is_roof} && ${is_hytte}', '${roof_color}'],
- ['${is_wall} && ${is_hytte}', '${wall_color}'],
- ['${is_roof} && ${is_laave}', '${roof_color}'],
- ['${is_wall} && ${is_laave}', '${wall_color}'],
- ['${is_roof} && ${is_bolig}', '${roof_color}'],
- ['${is_wall} && ${is_bolig}', '${wall_color}'],
- ['${is_roof} && ${is_divlarge}', '${darkgray_color}'],
- ["${CityFurniture.class} === '6012'", 'rgba(150, 150, 150, .2)'], // Gjerde
- ["${CityFurniture.class} === '6105'", 'rgba(80, 100, 80, .8)'], // Hekk
- ['true', '${lightgray_color}'],
- ],
- },
-});
+/* eslint-disable no-template-curly-in-string */
+import {Cesium3DTileStyle} from 'cesium';
+
+export default new Cesium3DTileStyle({
+ defines: {
+ is_roof: '${BuildingRoofSurface} !== undefined',
+ is_wall: '${BuildingWallSurface} !== undefined',
+ is_bolig: "${Building.function} === 'Bolig' || ${Building.function} === 'Fritidsbolig'",
+ is_hytte: "${Building.class} === '161'",
+ is_laave: "${Building.class} === '241'",
+ is_veksthus: "${Building.class} === '243'",
+ is_divlarge:
+ "${Building.function} === 'Garasje uthus' || ${Building.function} === 'Fabrikk naering' || ${Building.function} ==='Landbruk fiske'|| ${Building.function} === 'Samferdsel'|| ${Building.function} === 'Udefinert'|| ${Building.function} === 'Kontor'|| ${Building.function} === 'Handel'|| ${Building.function} === 'Overnatting'|| ${Building.function} === 'Restaurant'|| ${Building.function} === 'Undervisning'|| ${Building.function} === 'Kultur'|| ${Building.function} === 'Idrett'|| ${Building.function} === 'Kirke'|| ${Building.function} === 'Helse'",
+ glass_color: 'rgba(255*.4, 255*.4, 255*.5, .75)',
+ roof_color: 'rgb(255*.3, 255*.3, 255*.3)',
+ wall_color: 'rgb(255*.6, 255*.6, 255*.6)',
+ barnred_color: 'rgb(255*.5, 255*.15, 255*.15)',
+ tarbrown_color: 'rgb(255*.4, 255*.18, 255*.1)',
+ darkgray_color: 'rgb(255*.3, 255*.3, 255*.3)',
+ medgray_color: 'rgb(255*.5, 255*.5, 255*.5)',
+ lightgray_color: 'rgb(255*.8, 255*.8, 255*.8)',
+ },
+ show: 'true',
+ color: {
+ conditions: [
+ ['${is_veksthus}', '${glass_color}'],
+ ['${is_roof} && ${is_hytte}', '${roof_color}'],
+ ['${is_wall} && ${is_hytte}', '${wall_color}'],
+ ['${is_roof} && ${is_laave}', '${roof_color}'],
+ ['${is_wall} && ${is_laave}', '${wall_color}'],
+ ['${is_roof} && ${is_bolig}', '${roof_color}'],
+ ['${is_wall} && ${is_bolig}', '${wall_color}'],
+ ['${is_roof} && ${is_divlarge}', '${darkgray_color}'],
+ ["${CityFurniture.class} === '6012'", 'rgba(150, 150, 150, .2)'], // Gjerde
+ ["${CityFurniture.class} === '6105'", 'rgba(80, 100, 80, .8)'], // Hekk
+ ['true', '${lightgray_color}'],
+ ],
+ },
+});
diff --git a/code_and_tutorials/cesium-and-leaflet-example/src/components/Leaflet/EventHandler.tsx b/code and tutorials/cesium-and-leaflet-example/src/components/Leaflet/EventHandler.tsx
similarity index 95%
rename from code_and_tutorials/cesium-and-leaflet-example/src/components/Leaflet/EventHandler.tsx
rename to code and tutorials/cesium-and-leaflet-example/src/components/Leaflet/EventHandler.tsx
index 5300be6..cbd19b5 100644
--- a/code_and_tutorials/cesium-and-leaflet-example/src/components/Leaflet/EventHandler.tsx
+++ b/code and tutorials/cesium-and-leaflet-example/src/components/Leaflet/EventHandler.tsx
@@ -1,24 +1,24 @@
-import React from "react";
-import {useMapEvents} from 'react-leaflet';
-
-interface Props {
- onBoundsChange?: (bounds: L.LatLngBounds) => void;
-}
-
-export const EventHandler: React.FC = (props) => {
- const {onBoundsChange} = props;
- const map = useMapEvents({
- zoomend: () => {
- if (onBoundsChange) {
- onBoundsChange(map.getBounds());
- }
- },
- moveend: () => {
- if (onBoundsChange) {
- onBoundsChange(map.getBounds());
- }
- }
- });
- return null;
-};
-export default EventHandler;
+import React from "react";
+import {useMapEvents} from 'react-leaflet';
+
+interface Props {
+ onBoundsChange?: (bounds: L.LatLngBounds) => void;
+}
+
+export const EventHandler: React.FC = (props) => {
+ const {onBoundsChange} = props;
+ const map = useMapEvents({
+ zoomend: () => {
+ if (onBoundsChange) {
+ onBoundsChange(map.getBounds());
+ }
+ },
+ moveend: () => {
+ if (onBoundsChange) {
+ onBoundsChange(map.getBounds());
+ }
+ }
+ });
+ return null;
+};
+export default EventHandler;
diff --git a/code_and_tutorials/cesium-and-leaflet-example/src/components/Leaflet/LeafletMap.tsx b/code and tutorials/cesium-and-leaflet-example/src/components/Leaflet/LeafletMap.tsx
similarity index 97%
rename from code_and_tutorials/cesium-and-leaflet-example/src/components/Leaflet/LeafletMap.tsx
rename to code and tutorials/cesium-and-leaflet-example/src/components/Leaflet/LeafletMap.tsx
index e22683a..61b4619 100644
--- a/code_and_tutorials/cesium-and-leaflet-example/src/components/Leaflet/LeafletMap.tsx
+++ b/code and tutorials/cesium-and-leaflet-example/src/components/Leaflet/LeafletMap.tsx
@@ -1,27 +1,27 @@
-import React, {Suspense} from 'react';
-import { MapContainer, TileLayer } from "react-leaflet"
-import MapControls from '../MapControls';
-import EventHandler from './EventHandler';
-import { Props } from "../MapOrchestrator"
-
-const maptilesUrl = process.env.REACT_APP_MAPTILES_PROVIDER_URL || "";
-
-export const LeafletMap: React.FC = (props) => {
- const {components, onBoundsChange, bounds } = props
- const mapCenter = bounds?.getCenter();
- return (
-
-
- {components && }
-
- }>
-
-
-
-
- )
-}
-export default LeafletMap;
+import React, {Suspense} from 'react';
+import { MapContainer, TileLayer } from "react-leaflet"
+import MapControls from '../MapControls';
+import EventHandler from './EventHandler';
+import { Props } from "../MapOrchestrator"
+
+const maptilesUrl = process.env.REACT_APP_MAPTILES_PROVIDER_URL || "";
+
+export const LeafletMap: React.FC = (props) => {
+ const {components, onBoundsChange, bounds } = props
+ const mapCenter = bounds?.getCenter();
+ return (
+
+
+ {components && }
+
+ }>
+
+
+
+
+ )
+}
+export default LeafletMap;
diff --git a/code_and_tutorials/cesium-and-leaflet-example/src/components/Map.tsx b/code and tutorials/cesium-and-leaflet-example/src/components/Map.tsx
similarity index 96%
rename from code_and_tutorials/cesium-and-leaflet-example/src/components/Map.tsx
rename to code and tutorials/cesium-and-leaflet-example/src/components/Map.tsx
index 8676525..1689b2d 100644
--- a/code_and_tutorials/cesium-and-leaflet-example/src/components/Map.tsx
+++ b/code and tutorials/cesium-and-leaflet-example/src/components/Map.tsx
@@ -1,43 +1,43 @@
-import React, {useState} from 'react';
-import {makeStyles} from '@material-ui/core';
-import MapOrchestrator from './MapOrchestrator';
-import { fromBboxString } from '../utils/geomutils';
-import SwitchMode from './SwitchMode';
-
-const useStyles = makeStyles(() => ({
- root: {
- height: '100%',
- width: '100%',
- position: 'absolute',
- top: 0,
- bottom: 0,
- left: 0,
- margin: 0,
- padding: 0
- }
-}));
-
-export const Map: React.FC = () => {
- const classes = useStyles();
- const [type, setType] = useState<'leaflet' | 'cesium'>('leaflet');
- const toggleMapMode = () => setType(type === 'leaflet' ? 'cesium' : 'leaflet');
-
- return (
-
- ,
- },
- ]}
- >
-
-
- );
-};
-
-export default Map;
+import React, {useState} from 'react';
+import {makeStyles} from '@material-ui/core';
+import MapOrchestrator from './MapOrchestrator';
+import { fromBboxString } from '../utils/geomutils';
+import SwitchMode from './SwitchMode';
+
+const useStyles = makeStyles(() => ({
+ root: {
+ height: '100%',
+ width: '100%',
+ position: 'absolute',
+ top: 0,
+ bottom: 0,
+ left: 0,
+ margin: 0,
+ padding: 0
+ }
+}));
+
+export const Map: React.FC = () => {
+ const classes = useStyles();
+ const [type, setType] = useState<'leaflet' | 'cesium'>('leaflet');
+ const toggleMapMode = () => setType(type === 'leaflet' ? 'cesium' : 'leaflet');
+
+ return (
+
+ ,
+ },
+ ]}
+ >
+
+
+ );
+};
+
+export default Map;
diff --git a/code_and_tutorials/cesium-and-leaflet-example/src/components/MapControl.tsx b/code and tutorials/cesium-and-leaflet-example/src/components/MapControl.tsx
similarity index 95%
rename from code_and_tutorials/cesium-and-leaflet-example/src/components/MapControl.tsx
rename to code and tutorials/cesium-and-leaflet-example/src/components/MapControl.tsx
index c0a72c4..480b504 100644
--- a/code_and_tutorials/cesium-and-leaflet-example/src/components/MapControl.tsx
+++ b/code and tutorials/cesium-and-leaflet-example/src/components/MapControl.tsx
@@ -1,27 +1,27 @@
-import React from 'react';
-import {useRef, useEffect} from 'react';
-import L from 'leaflet';
-import { MapComponent } from '../utils/types';
-
-interface Props {
- component: MapComponent;
-}
-
-export const MapControl: React.FC = (props) => {
- const {node, render} = props.component;
- const divRef = useRef(null);
-
- useEffect(() => {
- if(divRef.current){
- L.DomEvent.disableClickPropagation(divRef.current);
- }
- });
-
- return (
-
- {node ? node : render ? render() : null}
-
- );
-};
-
-export default MapControl;
+import React from 'react';
+import {useRef, useEffect} from 'react';
+import L from 'leaflet';
+import { MapComponent } from '../utils/types';
+
+interface Props {
+ component: MapComponent;
+}
+
+export const MapControl: React.FC = (props) => {
+ const {node, render} = props.component;
+ const divRef = useRef(null);
+
+ useEffect(() => {
+ if(divRef.current){
+ L.DomEvent.disableClickPropagation(divRef.current);
+ }
+ });
+
+ return (
+
+ {node ? node : render ? render() : null}
+
+ );
+};
+
+export default MapControl;
diff --git a/code_and_tutorials/cesium-and-leaflet-example/src/components/MapControls.tsx b/code and tutorials/cesium-and-leaflet-example/src/components/MapControls.tsx
similarity index 96%
rename from code_and_tutorials/cesium-and-leaflet-example/src/components/MapControls.tsx
rename to code and tutorials/cesium-and-leaflet-example/src/components/MapControls.tsx
index 821e09b..23d053a 100644
--- a/code_and_tutorials/cesium-and-leaflet-example/src/components/MapControls.tsx
+++ b/code and tutorials/cesium-and-leaflet-example/src/components/MapControls.tsx
@@ -1,46 +1,46 @@
-import React from 'react';
-import { ReactElement } from 'react';
-import { MapComponent } from '../utils/types';
-import MapControl from './MapControl';
-
-interface Props {
- components: MapComponent[];
-}
-
-interface Positions {
- bottomleft: ReactElement[],
- bottomright: ReactElement[],
- topleft: ReactElement[],
- topright: ReactElement[],
-}
-
-export const MapControls: React.FC = (props) => {
- const {components} = props;
- const groups = components.reduce(
- (acc : Positions, c) => {
- acc[c.position].push( );
- return acc;
- },
- {
- bottomleft: [],
- bottomright: [],
- topleft: [],
- topright: [],
- }
- );
-
- return (
-
-
- {groups.topleft}
-
- {groups.topright}
-
- {groups.bottomleft}
-
- {groups.bottomright}
-
- );
-};
-
-export default MapControls;
+import React from 'react';
+import { ReactElement } from 'react';
+import { MapComponent } from '../utils/types';
+import MapControl from './MapControl';
+
+interface Props {
+ components: MapComponent[];
+}
+
+interface Positions {
+ bottomleft: ReactElement[],
+ bottomright: ReactElement[],
+ topleft: ReactElement[],
+ topright: ReactElement[],
+}
+
+export const MapControls: React.FC = (props) => {
+ const {components} = props;
+ const groups = components.reduce(
+ (acc : Positions, c) => {
+ acc[c.position].push( );
+ return acc;
+ },
+ {
+ bottomleft: [],
+ bottomright: [],
+ topleft: [],
+ topright: [],
+ }
+ );
+
+ return (
+
+
+ {groups.topleft}
+
+ {groups.topright}
+
+ {groups.bottomleft}
+
+ {groups.bottomright}
+
+ );
+};
+
+export default MapControls;
diff --git a/code_and_tutorials/cesium-and-leaflet-example/src/components/MapOrchestrator.tsx b/code and tutorials/cesium-and-leaflet-example/src/components/MapOrchestrator.tsx
similarity index 96%
rename from code_and_tutorials/cesium-and-leaflet-example/src/components/MapOrchestrator.tsx
rename to code and tutorials/cesium-and-leaflet-example/src/components/MapOrchestrator.tsx
index 4294fa2..2734da8 100644
--- a/code_and_tutorials/cesium-and-leaflet-example/src/components/MapOrchestrator.tsx
+++ b/code and tutorials/cesium-and-leaflet-example/src/components/MapOrchestrator.tsx
@@ -1,27 +1,27 @@
-import React, {ReactNode, useState} from 'react';
-import { MapComponent } from '../utils/types';
-import LeafletMap from './Leaflet/LeafletMap';
-import CesiumMap from './Cesium/CesiumMap';
-import L from 'leaflet';
-
-export interface Props {
- bounds?: L.LatLngBounds;
- onBoundsChange?: (bounds: L.LatLngBounds) => void;
- children?: ReactNode;
- components?: MapComponent[];
-}
-
-export const MapOrchestrator: React.FC = (props) => {
- const {type, ...rest} = props;
- const [bounds, setBounds] = useState(props.bounds);
-
- if (type === 'leaflet') {
- return ;
- }
- if (type === 'cesium') {
- return ;
- }
- return null;
-};
-
-export default MapOrchestrator;
+import React, {ReactNode, useState} from 'react';
+import { MapComponent } from '../utils/types';
+import LeafletMap from './Leaflet/LeafletMap';
+import CesiumMap from './Cesium/CesiumMap';
+import L from 'leaflet';
+
+export interface Props {
+ bounds?: L.LatLngBounds;
+ onBoundsChange?: (bounds: L.LatLngBounds) => void;
+ children?: ReactNode;
+ components?: MapComponent[];
+}
+
+export const MapOrchestrator: React.FC = (props) => {
+ const {type, ...rest} = props;
+ const [bounds, setBounds] = useState(props.bounds);
+
+ if (type === 'leaflet') {
+ return ;
+ }
+ if (type === 'cesium') {
+ return ;
+ }
+ return null;
+};
+
+export default MapOrchestrator;
diff --git a/code_and_tutorials/cesium-and-leaflet-example/src/components/SwitchMode.tsx b/code and tutorials/cesium-and-leaflet-example/src/components/SwitchMode.tsx
similarity index 95%
rename from code_and_tutorials/cesium-and-leaflet-example/src/components/SwitchMode.tsx
rename to code and tutorials/cesium-and-leaflet-example/src/components/SwitchMode.tsx
index d2df86c..28928ae 100644
--- a/code_and_tutorials/cesium-and-leaflet-example/src/components/SwitchMode.tsx
+++ b/code and tutorials/cesium-and-leaflet-example/src/components/SwitchMode.tsx
@@ -1,32 +1,32 @@
-import React from 'react';
-import ThreeDRotationIcon from '@material-ui/icons/ThreeDRotation';
-import {IconButton, makeStyles} from '@material-ui/core';
-
-const useStyles = makeStyles(() => ({
- icon: {
- background: 'rgba(255, 255, 255, 1)',
- padding: '10px',
- color: 'primary',
- border: '0px',
- outline: 'none',
- '&:hover': {
- background: 'rgba(255, 255, 255, 0.6)',
- },
- },
-}));
-
-interface Props {
- switchMode: () => void;
-}
-
-export const SwitchMode: React.FC = (props) => {
- const classes = useStyles();
- const {switchMode} = props;
- return (
-
-
-
- );
-};
-
-export default SwitchMode;
+import React from 'react';
+import ThreeDRotationIcon from '@material-ui/icons/ThreeDRotation';
+import {IconButton, makeStyles} from '@material-ui/core';
+
+const useStyles = makeStyles(() => ({
+ icon: {
+ background: 'rgba(255, 255, 255, 1)',
+ padding: '10px',
+ color: 'primary',
+ border: '0px',
+ outline: 'none',
+ '&:hover': {
+ background: 'rgba(255, 255, 255, 0.6)',
+ },
+ },
+}));
+
+interface Props {
+ switchMode: () => void;
+}
+
+export const SwitchMode: React.FC = (props) => {
+ const classes = useStyles();
+ const {switchMode} = props;
+ return (
+
+
+
+ );
+};
+
+export default SwitchMode;
diff --git a/code_and_tutorials/cesium-and-leaflet-example/src/index.tsx b/code and tutorials/cesium-and-leaflet-example/src/index.tsx
similarity index 100%
rename from code_and_tutorials/cesium-and-leaflet-example/src/index.tsx
rename to code and tutorials/cesium-and-leaflet-example/src/index.tsx
diff --git a/code_and_tutorials/cesium-and-leaflet-example/src/utils/geomutils.ts b/code and tutorials/cesium-and-leaflet-example/src/utils/geomutils.ts
similarity index 97%
rename from code_and_tutorials/cesium-and-leaflet-example/src/utils/geomutils.ts
rename to code and tutorials/cesium-and-leaflet-example/src/utils/geomutils.ts
index 9f70bcf..6a43a92 100644
--- a/code_and_tutorials/cesium-and-leaflet-example/src/utils/geomutils.ts
+++ b/code and tutorials/cesium-and-leaflet-example/src/utils/geomutils.ts
@@ -1,19 +1,19 @@
-import { Geometry, Feature } from "geojson";
-import * as L from 'leaflet';
-
-export const getBounds = (geometry: Geometry): L.LatLngBounds => L.geoJSON(geometry).getBounds();
-
-export const getBoundsForGeometries = (geometries: Geometry[]): L.LatLngBounds =>
- geometries.slice(1).reduce((acc, g) => acc.extend(getBounds(g)), getBounds(geometries[0]));
-
-export const getBoundsForFeatures = (features: Feature[]): L.LatLngBounds =>
- getBoundsForGeometries(features.map((f) => f.geometry));
-
-export const getBboxString = (geometry: Geometry) => getBounds(geometry).toBBoxString();
-
-const splitBbox = (bbox: string) => bbox.split(',').map(parseFloat);
-
-const fromBBoxArray = (bbox: number[]) =>
- new L.LatLngBounds(new L.LatLng(bbox[1], bbox[0]), new L.LatLng(bbox[3], bbox[2]));
-
+import { Geometry, Feature } from "geojson";
+import * as L from 'leaflet';
+
+export const getBounds = (geometry: Geometry): L.LatLngBounds => L.geoJSON(geometry).getBounds();
+
+export const getBoundsForGeometries = (geometries: Geometry[]): L.LatLngBounds =>
+ geometries.slice(1).reduce((acc, g) => acc.extend(getBounds(g)), getBounds(geometries[0]));
+
+export const getBoundsForFeatures = (features: Feature[]): L.LatLngBounds =>
+ getBoundsForGeometries(features.map((f) => f.geometry));
+
+export const getBboxString = (geometry: Geometry) => getBounds(geometry).toBBoxString();
+
+const splitBbox = (bbox: string) => bbox.split(',').map(parseFloat);
+
+const fromBBoxArray = (bbox: number[]) =>
+ new L.LatLngBounds(new L.LatLng(bbox[1], bbox[0]), new L.LatLng(bbox[3], bbox[2]));
+
export const fromBboxString = (bbox: string) => fromBBoxArray(splitBbox(bbox));
\ No newline at end of file
diff --git a/code_and_tutorials/cesium-and-leaflet-example/src/utils/types.ts b/code and tutorials/cesium-and-leaflet-example/src/utils/types.ts
similarity index 95%
rename from code_and_tutorials/cesium-and-leaflet-example/src/utils/types.ts
rename to code and tutorials/cesium-and-leaflet-example/src/utils/types.ts
index 8ea313f..7cc7d1c 100644
--- a/code_and_tutorials/cesium-and-leaflet-example/src/utils/types.ts
+++ b/code and tutorials/cesium-and-leaflet-example/src/utils/types.ts
@@ -1,13 +1,13 @@
-import { ReactNode } from "react"
-
-export interface LatLng {
- lat: number;
- lng: number;
-}
-
-export interface MapComponent {
- node?: ReactNode;
- render?: () => ReactNode;
- key: string;
- position: 'topleft' | 'topright' | 'bottomleft' | 'bottomright';
+import { ReactNode } from "react"
+
+export interface LatLng {
+ lat: number;
+ lng: number;
+}
+
+export interface MapComponent {
+ node?: ReactNode;
+ render?: () => ReactNode;
+ key: string;
+ position: 'topleft' | 'topright' | 'bottomleft' | 'bottomright';
}
\ No newline at end of file
diff --git a/code_and_tutorials/cesium-and-leaflet-example/tsconfig.json b/code and tutorials/cesium-and-leaflet-example/tsconfig.json
similarity index 95%
rename from code_and_tutorials/cesium-and-leaflet-example/tsconfig.json
rename to code and tutorials/cesium-and-leaflet-example/tsconfig.json
index f00dcee..16c98de 100644
--- a/code_and_tutorials/cesium-and-leaflet-example/tsconfig.json
+++ b/code and tutorials/cesium-and-leaflet-example/tsconfig.json
@@ -1,26 +1,26 @@
-{
- "compilerOptions": {
- "target": "es2018",
- "lib": [
- "dom",
- "dom.iterable",
- "esnext"
- ],
- "allowJs": true,
- "skipLibCheck": true,
- "esModuleInterop": true,
- "allowSyntheticDefaultImports": true,
- "strict": true,
- "forceConsistentCasingInFileNames": true,
- "noFallthroughCasesInSwitch": true,
- "module": "esnext",
- "moduleResolution": "node",
- "resolveJsonModule": true,
- "isolatedModules": true,
- "noEmit": true,
- "jsx": "react-jsx"
- },
- "include": [
- "src"
- ]
-}
+{
+ "compilerOptions": {
+ "target": "es2018",
+ "lib": [
+ "dom",
+ "dom.iterable",
+ "esnext"
+ ],
+ "allowJs": true,
+ "skipLibCheck": true,
+ "esModuleInterop": true,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "noFallthroughCasesInSwitch": true,
+ "module": "esnext",
+ "moduleResolution": "node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx"
+ },
+ "include": [
+ "src"
+ ]
+}
diff --git a/code_and_tutorials/cesium-and-leaflet-example/webpack.config.js b/code and tutorials/cesium-and-leaflet-example/webpack.config.js
similarity index 96%
rename from code_and_tutorials/cesium-and-leaflet-example/webpack.config.js
rename to code and tutorials/cesium-and-leaflet-example/webpack.config.js
index e7407b4..5950a09 100644
--- a/code_and_tutorials/cesium-and-leaflet-example/webpack.config.js
+++ b/code and tutorials/cesium-and-leaflet-example/webpack.config.js
@@ -1,52 +1,52 @@
-"use strict";
-const webpack = require("webpack");
-const HtmlPlugin = require("html-webpack-plugin");
-const CopyPlugin = require("copy-webpack-plugin");
-require("dotenv").config({ path: './.env'})
-
-module.exports = (_env, args) => ({
- mode: args.mode === "production" ? "production" : "development",
- resolve: {
- extensions: ['.ts', '.tsx', '.js', '.json']
- },
- module: {
- rules: [
- {
- test: /\.(js|ts|tsx)$/,
- exclude: /node_modules/,
- use: {
- loader: "babel-loader",
- options: {
- plugins: args.mode === "production" ? [] : [],
- }
- },
- },
- {
- test: /\.css$/,
- use: ["style-loader", "css-loader"],
- },
- {
- test: /\.(png|gif|jpg|jpeg|svg|xml|json)$/,
- use: ["url-loader"],
- },
- ],
- },
- plugins: [
- new webpack.DefinePlugin({
- CESIUM_BASE_URL: JSON.stringify(""),
- "process.env": JSON.stringify(process.env)
- }),
- new CopyPlugin({
- patterns: [
- { from: "node_modules/cesium/Build/Cesium/Workers", to: "Workers" },
- { from: "node_modules/cesium/Build/Cesium/ThirdParty", to: "ThirdParty" },
- { from: "node_modules/cesium/Build/Cesium/Assets", to: "Assets" },
- { from: "node_modules/cesium/Build/Cesium/Widgets", to: "Widgets" },
- ],
- }),
- new HtmlPlugin({
- template: "index.html"
- }),
- ...(args.mode === "production" ? [] : []),
- ],
+"use strict";
+const webpack = require("webpack");
+const HtmlPlugin = require("html-webpack-plugin");
+const CopyPlugin = require("copy-webpack-plugin");
+require("dotenv").config({ path: './.env'})
+
+module.exports = (_env, args) => ({
+ mode: args.mode === "production" ? "production" : "development",
+ resolve: {
+ extensions: ['.ts', '.tsx', '.js', '.json']
+ },
+ module: {
+ rules: [
+ {
+ test: /\.(js|ts|tsx)$/,
+ exclude: /node_modules/,
+ use: {
+ loader: "babel-loader",
+ options: {
+ plugins: args.mode === "production" ? [] : [],
+ }
+ },
+ },
+ {
+ test: /\.css$/,
+ use: ["style-loader", "css-loader"],
+ },
+ {
+ test: /\.(png|gif|jpg|jpeg|svg|xml|json)$/,
+ use: ["url-loader"],
+ },
+ ],
+ },
+ plugins: [
+ new webpack.DefinePlugin({
+ CESIUM_BASE_URL: JSON.stringify(""),
+ "process.env": JSON.stringify(process.env)
+ }),
+ new CopyPlugin({
+ patterns: [
+ { from: "node_modules/cesium/Build/Cesium/Workers", to: "Workers" },
+ { from: "node_modules/cesium/Build/Cesium/ThirdParty", to: "ThirdParty" },
+ { from: "node_modules/cesium/Build/Cesium/Assets", to: "Assets" },
+ { from: "node_modules/cesium/Build/Cesium/Widgets", to: "Widgets" },
+ ],
+ }),
+ new HtmlPlugin({
+ template: "index.html"
+ }),
+ ...(args.mode === "production" ? [] : []),
+ ],
});
\ No newline at end of file
diff --git a/code_and_tutorials/getting started - fritekstsok/HowTo/KOMMUNECUSTOM.md b/code and tutorials/getting started - fritekstsok/HowTo/KOMMUNECUSTOM.md
similarity index 97%
rename from code_and_tutorials/getting started - fritekstsok/HowTo/KOMMUNECUSTOM.md
rename to code and tutorials/getting started - fritekstsok/HowTo/KOMMUNECUSTOM.md
index e87c0a9..66e4fc1 100644
--- a/code_and_tutorials/getting started - fritekstsok/HowTo/KOMMUNECUSTOM.md
+++ b/code and tutorials/getting started - fritekstsok/HowTo/KOMMUNECUSTOM.md
@@ -1,79 +1,79 @@
-# HowTo: Refine search for municipalities.
-In some cases you may not want to search all the addresses of Norway. Instead you may want to restrict your search to one or more municipalities, which is possible through the ```suggest/kommunecustom``` endpoint.
-
-Swagger documentation: [Kommunecustom](https://fritekstsok.api.norkart.no/swagger-ui/#!/suggest/CustomKommuneSuggestionRequestkommunecustom_Get)
-
-## Example
-In this example we will search for ```street addresses``` by the letter ```N``` within ```Hemsedal```.
-
-#### Parameters:
-* ```Query```: N
-* ```Size```: 2
-* ```Targets```: gateadresse (only street addresses)
-* ```KommuneLimit```: 3042 (Hemsedal)
-
-### Example request
-```
-GET
-https://fritekstsok.api.norkart.no/suggest/kommunecustom?Query=Svøovegen&Size=2&Targets=gateadresse&KommuneLimit=3042&api_key={{YOUR_API_KEY}}
-```
-
-### Example response
-
-```json
-{
- "Options": [
- {
- "Id": "30420110000130000000",
- "Type": "gateadresse",
- "Text": "Nedre Fjellstøllie 13, Hemsedal",
- "Score": 2.1000087E+09,
- "Url": "https://fritekstsok.api.norkart.no/data/matrikkel/adresse/gateadresse/30420110000130000000",
- "PayLoad": {
- "AdresseMatrikkelNummer": "30420007100190000000",
- "Text": "Nedre Fjellstøllie 13, Hemsedal",
- "AdresseId": "30420110000130000000",
- "VegAdresseId": "30420110000130",
- "Posisjon": {
- "X": 8.44649094586596,
- "Y": 60.9274579135861,
- "SRS": 4326
- },
- "PostNummer": "3560",
- "PostSted": "HEMSEDAL"
- },
- "LevenshteinScore": 30,
- "ExactMatches": 0
- },
- {
- "Id": "30420110000170000000",
- "Type": "gateadresse",
- "Text": "Nedre Fjellstøllie 17, Hemsedal",
- "Score": 2.10000832E+09,
- "Url": "https://fritekstsok.api.norkart.no/data/matrikkel/adresse/gateadresse/30420110000170000000",
- "PayLoad": {
- "AdresseMatrikkelNummer": "30420007100230000000",
- "Text": "Nedre Fjellstøllie 17, Hemsedal",
- "AdresseId": "30420110000170000000",
- "VegAdresseId": "30420110000170",
- "Posisjon": {
- "X": 8.44670488338071,
- "Y": 60.9273546451684,
- "SRS": 4326
- },
- "PostNummer": "3560",
- "PostSted": "HEMSEDAL"
- },
- "LevenshteinScore": 30,
- "ExactMatches": 0
- }
- ],
- "SRS": 4326
-}
-
-```
-
-The ```Url``` field in the response contains the search endpoint where you will get more detailed information over the address in question.
-
-
-
+# HowTo: Refine search for municipalities.
+In some cases you may not want to search all the addresses of Norway. Instead you may want to restrict your search to one or more municipalities, which is possible through the ```suggest/kommunecustom``` endpoint.
+
+Swagger documentation: [Kommunecustom](https://fritekstsok.api.norkart.no/swagger-ui/#!/suggest/CustomKommuneSuggestionRequestkommunecustom_Get)
+
+## Example
+In this example we will search for ```street addresses``` by the letter ```N``` within ```Hemsedal```.
+
+#### Parameters:
+* ```Query```: N
+* ```Size```: 2
+* ```Targets```: gateadresse (only street addresses)
+* ```KommuneLimit```: 3042 (Hemsedal)
+
+### Example request
+```
+GET
+https://fritekstsok.api.norkart.no/suggest/kommunecustom?Query=Svøovegen&Size=2&Targets=gateadresse&KommuneLimit=3042&api_key={{YOUR_API_KEY}}
+```
+
+### Example response
+
+```json
+{
+ "Options": [
+ {
+ "Id": "30420110000130000000",
+ "Type": "gateadresse",
+ "Text": "Nedre Fjellstøllie 13, Hemsedal",
+ "Score": 2.1000087E+09,
+ "Url": "https://fritekstsok.api.norkart.no/data/matrikkel/adresse/gateadresse/30420110000130000000",
+ "PayLoad": {
+ "AdresseMatrikkelNummer": "30420007100190000000",
+ "Text": "Nedre Fjellstøllie 13, Hemsedal",
+ "AdresseId": "30420110000130000000",
+ "VegAdresseId": "30420110000130",
+ "Posisjon": {
+ "X": 8.44649094586596,
+ "Y": 60.9274579135861,
+ "SRS": 4326
+ },
+ "PostNummer": "3560",
+ "PostSted": "HEMSEDAL"
+ },
+ "LevenshteinScore": 30,
+ "ExactMatches": 0
+ },
+ {
+ "Id": "30420110000170000000",
+ "Type": "gateadresse",
+ "Text": "Nedre Fjellstøllie 17, Hemsedal",
+ "Score": 2.10000832E+09,
+ "Url": "https://fritekstsok.api.norkart.no/data/matrikkel/adresse/gateadresse/30420110000170000000",
+ "PayLoad": {
+ "AdresseMatrikkelNummer": "30420007100230000000",
+ "Text": "Nedre Fjellstøllie 17, Hemsedal",
+ "AdresseId": "30420110000170000000",
+ "VegAdresseId": "30420110000170",
+ "Posisjon": {
+ "X": 8.44670488338071,
+ "Y": 60.9273546451684,
+ "SRS": 4326
+ },
+ "PostNummer": "3560",
+ "PostSted": "HEMSEDAL"
+ },
+ "LevenshteinScore": 30,
+ "ExactMatches": 0
+ }
+ ],
+ "SRS": 4326
+}
+
+```
+
+The ```Url``` field in the response contains the search endpoint where you will get more detailed information over the address in question.
+
+
+
diff --git a/code_and_tutorials/getting started - fritekstsok/README.md b/code and tutorials/getting started - fritekstsok/README.md
similarity index 100%
rename from code_and_tutorials/getting started - fritekstsok/README.md
rename to code and tutorials/getting started - fritekstsok/README.md
diff --git a/code_and_tutorials/getting started - maptiles in leaflet.js/Kart-Flyfoto/index.html b/code and tutorials/getting started - maptiles in leaflet.js/Kart-Flyfoto/index.html
similarity index 100%
rename from code_and_tutorials/getting started - maptiles in leaflet.js/Kart-Flyfoto/index.html
rename to code and tutorials/getting started - maptiles in leaflet.js/Kart-Flyfoto/index.html
diff --git a/code_and_tutorials/getting started - maptiles in leaflet.js/Kart-Flyfoto/mFlyfoto.css b/code and tutorials/getting started - maptiles in leaflet.js/Kart-Flyfoto/mFlyfoto.css
similarity index 100%
rename from code_and_tutorials/getting started - maptiles in leaflet.js/Kart-Flyfoto/mFlyfoto.css
rename to code and tutorials/getting started - maptiles in leaflet.js/Kart-Flyfoto/mFlyfoto.css
diff --git a/code_and_tutorials/getting started - maptiles in leaflet.js/Kart-Flyfoto/mFlyfoto.js b/code and tutorials/getting started - maptiles in leaflet.js/Kart-Flyfoto/mFlyfoto.js
similarity index 100%
rename from code_and_tutorials/getting started - maptiles in leaflet.js/Kart-Flyfoto/mFlyfoto.js
rename to code and tutorials/getting started - maptiles in leaflet.js/Kart-Flyfoto/mFlyfoto.js
diff --git a/code_and_tutorials/getting started - maptiles in leaflet.js/Kart-FlyfotoMappe/aerial1.JPG b/code and tutorials/getting started - maptiles in leaflet.js/Kart-FlyfotoMappe/aerial1.JPG
similarity index 100%
rename from code_and_tutorials/getting started - maptiles in leaflet.js/Kart-FlyfotoMappe/aerial1.JPG
rename to code and tutorials/getting started - maptiles in leaflet.js/Kart-FlyfotoMappe/aerial1.JPG
diff --git a/code_and_tutorials/getting started - maptiles in leaflet.js/Kart-FlyfotoMappe/aerial2.JPG b/code and tutorials/getting started - maptiles in leaflet.js/Kart-FlyfotoMappe/aerial2.JPG
similarity index 100%
rename from code_and_tutorials/getting started - maptiles in leaflet.js/Kart-FlyfotoMappe/aerial2.JPG
rename to code and tutorials/getting started - maptiles in leaflet.js/Kart-FlyfotoMappe/aerial2.JPG
diff --git a/code_and_tutorials/getting started - maptiles in leaflet.js/Kart-FlyfotoMappe/aerial3(foto).JPG b/code and tutorials/getting started - maptiles in leaflet.js/Kart-FlyfotoMappe/aerial3(foto).JPG
similarity index 100%
rename from code_and_tutorials/getting started - maptiles in leaflet.js/Kart-FlyfotoMappe/aerial3(foto).JPG
rename to code and tutorials/getting started - maptiles in leaflet.js/Kart-FlyfotoMappe/aerial3(foto).JPG
diff --git a/code_and_tutorials/getting started - maptiles in leaflet.js/Kart-FlyfotoMappe/aerial3.JPG b/code and tutorials/getting started - maptiles in leaflet.js/Kart-FlyfotoMappe/aerial3.JPG
similarity index 100%
rename from code_and_tutorials/getting started - maptiles in leaflet.js/Kart-FlyfotoMappe/aerial3.JPG
rename to code and tutorials/getting started - maptiles in leaflet.js/Kart-FlyfotoMappe/aerial3.JPG
diff --git a/code_and_tutorials/getting started - maptiles in leaflet.js/README.md b/code and tutorials/getting started - maptiles in leaflet.js/README.md
similarity index 100%
rename from code_and_tutorials/getting started - maptiles in leaflet.js/README.md
rename to code and tutorials/getting started - maptiles in leaflet.js/README.md
diff --git a/code_and_tutorials/getting started - maptiles in mapbox.gl/README.md b/code and tutorials/getting started - maptiles in mapbox.gl/README.md
similarity index 100%
rename from code_and_tutorials/getting started - maptiles in mapbox.gl/README.md
rename to code and tutorials/getting started - maptiles in mapbox.gl/README.md
diff --git a/code_and_tutorials/leaflet-webatlastiles-js/.gitignore b/code and tutorials/leaflet-webatlastiles-js/.gitignore
similarity index 100%
rename from code_and_tutorials/leaflet-webatlastiles-js/.gitignore
rename to code and tutorials/leaflet-webatlastiles-js/.gitignore
diff --git a/code_and_tutorials/leaflet-webatlastiles-js/README.md b/code and tutorials/leaflet-webatlastiles-js/README.md
similarity index 100%
rename from code_and_tutorials/leaflet-webatlastiles-js/README.md
rename to code and tutorials/leaflet-webatlastiles-js/README.md
diff --git a/code_and_tutorials/leaflet-webatlastiles-js/index.html b/code and tutorials/leaflet-webatlastiles-js/index.html
similarity index 100%
rename from code_and_tutorials/leaflet-webatlastiles-js/index.html
rename to code and tutorials/leaflet-webatlastiles-js/index.html
diff --git a/code_and_tutorials/leaflet-webatlastiles-js/index.js b/code and tutorials/leaflet-webatlastiles-js/index.js
similarity index 100%
rename from code_and_tutorials/leaflet-webatlastiles-js/index.js
rename to code and tutorials/leaflet-webatlastiles-js/index.js
diff --git a/code_and_tutorials/leaflet-webatlastiles-js/package.json b/code and tutorials/leaflet-webatlastiles-js/package.json
similarity index 100%
rename from code_and_tutorials/leaflet-webatlastiles-js/package.json
rename to code and tutorials/leaflet-webatlastiles-js/package.json
diff --git a/code_and_tutorials/leaflet-webatlastiles-js/yarn.lock b/code and tutorials/leaflet-webatlastiles-js/yarn.lock
similarity index 100%
rename from code_and_tutorials/leaflet-webatlastiles-js/yarn.lock
rename to code and tutorials/leaflet-webatlastiles-js/yarn.lock
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/.gitignore b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/.gitignore
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/.gitignore
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/.gitignore
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/README.md b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/README.md
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/README.md
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/README.md
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/package-lock.json b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/package-lock.json
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/package-lock.json
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/package-lock.json
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/package.json b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/package.json
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/package.json
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/package.json
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/public/favicon.ico b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/public/favicon.ico
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/public/favicon.ico
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/public/favicon.ico
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/public/index.html b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/public/index.html
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/public/index.html
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/public/index.html
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/public/manifest.json b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/public/manifest.json
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/public/manifest.json
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/public/manifest.json
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/public/robots.txt b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/public/robots.txt
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/public/robots.txt
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/public/robots.txt
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/public/screenshot.png b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/public/screenshot.png
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/public/screenshot.png
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/public/screenshot.png
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/App.css b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/App.css
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/App.css
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/App.css
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/App.test.tsx b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/App.test.tsx
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/App.test.tsx
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/App.test.tsx
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/App.tsx b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/App.tsx
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/App.tsx
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/App.tsx
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/api/fritekstsokapi.ts b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/api/fritekstsokapi.ts
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/api/fritekstsokapi.ts
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/api/fritekstsokapi.ts
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/api/matrikkelkartapi.ts b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/api/matrikkelkartapi.ts
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/api/matrikkelkartapi.ts
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/api/matrikkelkartapi.ts
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/ApiKeyPage.tsx b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/ApiKeyPage.tsx
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/ApiKeyPage.tsx
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/ApiKeyPage.tsx
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/Search.tsx b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/Search.tsx
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/Search.tsx
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/Search.tsx
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/map/BaseLayers.tsx b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/map/BaseLayers.tsx
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/map/BaseLayers.tsx
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/map/BaseLayers.tsx
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/map/GeoJsonLayer.tsx b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/map/GeoJsonLayer.tsx
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/map/GeoJsonLayer.tsx
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/map/GeoJsonLayer.tsx
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/map/LayerControl.tsx b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/map/LayerControl.tsx
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/map/LayerControl.tsx
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/map/LayerControl.tsx
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/map/Map.tsx b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/map/Map.tsx
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/map/Map.tsx
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/map/Map.tsx
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/map/OverlayLayers.tsx b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/map/OverlayLayers.tsx
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/map/OverlayLayers.tsx
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/map/OverlayLayers.tsx
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/map/SearchControl.tsx b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/map/SearchControl.tsx
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/map/SearchControl.tsx
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/map/SearchControl.tsx
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/map/WmsLayer.tsx b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/map/WmsLayer.tsx
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/map/WmsLayer.tsx
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/map/WmsLayer.tsx
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/teig/TeigInfo.tsx b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/teig/TeigInfo.tsx
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/teig/TeigInfo.tsx
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/components/teig/TeigInfo.tsx
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/index.css b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/index.css
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/index.css
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/index.css
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/index.tsx b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/index.tsx
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/index.tsx
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/index.tsx
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/react-app-env.d.ts b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/react-app-env.d.ts
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/react-app-env.d.ts
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/react-app-env.d.ts
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/reportWebVitals.ts b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/reportWebVitals.ts
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/reportWebVitals.ts
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/reportWebVitals.ts
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/setupTests.ts b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/setupTests.ts
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/setupTests.ts
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/setupTests.ts
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/state/state.ts b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/state/state.ts
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/state/state.ts
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/src/state/state.ts
diff --git a/code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/tsconfig.json b/code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/tsconfig.json
similarity index 100%
rename from code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/tsconfig.json
rename to code and tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example/tsconfig.json
diff --git a/code_and_tutorials/README.md b/code_and_tutorials/README.md
deleted file mode 100644
index f9319bc..0000000
--- a/code_and_tutorials/README.md
+++ /dev/null
@@ -1,14 +0,0 @@
-# Code examples and Tutorials for our API's
-
-The folders in this directory contains tutorials and code examples demonstrating use of our API's.
-
-## About the Tutorials
-
-Code | Description | |
---- | --- | ---
-[Maptiles Leaflet.js](./getting%20started%20-%20maptiles%20in%20mapbox.gl) | Demonstrates the use of Norkart's maptiles with leaflet.js. | [Live Demo](https://codepen.io/alexanno/pen/EzrjEb)
-[Maptiles Mapbox.gl](./getting%20started%20-%20maptiles%20in%20mapbox.gl) | Demonstrates the use of Norkart's maptiles with mapbox | [Live Demo](https://codepen.io/alexanno/pen/NWRpYER)
-[Use of leaflet-webatlastile](./leaflet-webatlastiles-js) | Shows how to use the leaflet-webatlastile to add Norkart's maptiles to Leaflet. Uses the Parcel bundler.
-[React Example](./reactleaflet_fritekstsok_maptiles_matrikkelkart_example) | Shows an example of using Norkart's maptiles, search and 'matrikkelkart' APIs in a simple React application. The example is written in typescript and uses recoil, react-leaflet and material-ui libraries. | [Live Demo](https://mango-flower-0fd4d4b03.azurestaticapps.net/)
-[Use of Cesium and Leaflet](./cesium-and-leaflet-example) | Shows how to use Cesium and Leaflet, and how to swich between the map views in React.
-