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 api together with a map](images\Sok_Produktbeskrivelse-D8mOVPYT.png)
+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": <>, - "properties": { - "komm": "5001", - "kumulesone": "500100736", - "dvh_objekttype": "kumuleflate" - } - } - ] -} -``` diff --git a/API-datavarehus/README.md b/API-datavarehus/README.md deleted file mode 100644 index 640774a..0000000 --- a/API-datavarehus/README.md +++ /dev/null @@ -1,156 +0,0 @@ -# API-Datavarehus -This API allows you to query the datavarehus-database to retrieve geospatial features which matches a query. Returns data as GeoJSON FeatureCollections. - -Swagger: [Datavarehus-Swagger](https://datavarehus.api.norkart.no/swagger/index.html) - -Request API access [here](https://www.norkart.no/dataoganalyse/). - -## Example: Do a intersection query on the traffic volume dataset. -(see more examples [here](#more-examples)) - -Parameters explanation: -* ```Ids```: List of dataset ids you want to query. -* ```Geometry```: Request area. -* ```ClipBuffer```: If request area intersects with dataset. Clip at intersection, or incude a buffer to the response area. If 0, only area that intersects with the request is included. - -### Request -Request type: ```POST``` - -URL -``` -https://datavarehus.api.norkart.no/v2/views/features/intersectionquery?api_key={{YOUR_API_KEY}} -``` -BODY -``` -{ - "Ids": ["sv_svv_24_aadt"], - "Geometry": { - "type": "Polygon", - "coordinates": [ - [ - [ - 10.489873, - 63.431307 - ], - [ - 10.490001, - 63.431072 - ], - [ - 10.488811, - 63.430904 - ], - [ - 10.488628, - 63.43111 - ], - [ - 10.489873, - 63.431307 - ] - ] - ] - }, - "ClipBuffer": 0 -} -``` - -### Response - -```json -{ - "sv_svv_24_aadt": { - "type": "FeatureCollection", - "bbox": null, - "features": [ - { - "type": "Feature", - "bbox": [ - 10.488694846302817, - 63.43103475242095, - 10.489915589921425, - 63.43122880778007 - ], - "geometry": { - "type": "LineString", - "coordinates": [ - [ - 10.488694846302817, - 63.43103475242095, - 0 - ], - [ - 10.488769920458822, - 63.43105250905373, - 0 - ], - [ - 10.488900554841255, - 63.431080914733116, - 0 - ], - [ - 10.489033297465012, - 63.43110740878982, - 0 - ], - [ - 10.48907210593495, - 63.43111465955671, - 0 - ], - [ - 10.489167377447, - 63.43113178702709, - 0 - ], - [ - 10.489303779484398, - 63.43115417047448, - 0 - ], - [ - 10.48941695710104, - 63.43117105439856, - 0 - ], - [ - 10.489531544853506, - 63.43118663406908, - 0 - ], - [ - 10.489646743672424, - 63.43120088423304, - 0 - ], - [ - 10.489762938977504, - 63.431213906982634, - 0 - ], - [ - 10.48987994508435, - 63.43122560653392, - 0 - ], - [ - 10.489915589921425, - 63.43122880778007, - 0 - ] - ] - }, - "properties": { - "adtaar": 2020, //Year - "adttotal": 4559, //Daily traffic volume at the returned area - "dvh_objekttype": "aadt" - } - } - ] - } -} -``` - -## More-Examples -- [kumulesone intersection](./MoreExamples/kumulesone_intersection.md) \ No newline at end of file diff --git a/API-fritekstsok/README.md b/API-fritekstsok/README.md deleted file mode 100644 index efd03e4..0000000 --- a/API-fritekstsok/README.md +++ /dev/null @@ -1,67 +0,0 @@ -# API-Fritekstsok -Fritekstsok exposes the most updated addresses in Norway. - -## Code examples and tutorials -- [Getting Started](./../code_and_tutorials/getting%20started%20-%20fritekstsok) -- [React Example:](./../code_and_tutorials/reactleaflet_fritekstsok_maptiles_matrikkelkart_example) In this demo you can see fritekstsøk used in a simple React application. - -## Recommendations - -### Suggest - Autocomplete -For autocomplete it is recommended to use the /suggest/kommunecustom endpoint. This endpoint can be used to search multiple targets (depending on what you want to search for), but for most purposes this endpoint should be used with targets=gateadresse. [An example is shown below](#example-get-address-suggestions-by-query) -[More details about the kommunecustom endpoints](../code_and_tutorials/getting%20started%20-%20fritekstsok/HowTo/KOMMUNECUSTOM.md) - -### Search - Gives more information + 'Fuzzy' -While /suggest/kommunecustom is great for autocomplete purposes, sometimes one wants more information than what this endpoint returns. If this is the case, the search endpoint can be used insead: /search/kommunecustom. This endpoint can be used in the same way as the suggest-endpoint but it is a bit slower and therefore not suitable for autocomplete-purposes. - -Reasons to use this endpoint instead of suggest: -1. The search endpoint returns more information -2. The search-endpoint is 'fuzzy'. Meaning: If you are searching for an adress which has the name Huleveien 13, but you set query='Hulevegen 13' you will still get respons from the API. If you do the same 'typo' on the suggest-endpoint, this adress will not be returned. Another way to put it: the search-endpoint is less strict than the suggest-endpoint. - - -## Example: Get address suggestions by query -The ```suggest/kommunecustom``` endpoint with ```?targets=gateadresse```, returns a list of address suggestions based on the ```Query``` parameter, where you can limit the size of the returned list by the ```Size``` parameter. - -### Request - -``` -GET -https://fritekstsok.api.norkart.no/suggest/kommunecustom?targets=gateadresse&Query=Oslo&Size=1&api_key={{YOUR_API_KEY}} -``` - -### Response - -```json -{ - "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 contains the search endpoint where you get more detailed information over the address in question. diff --git a/API-maptiles/README.md b/Articles/TMS/README.md similarity index 89% rename from API-maptiles/README.md rename to Articles/TMS/README.md index 6277911..965c57d 100644 --- a/API-maptiles/README.md +++ b/Articles/TMS/README.md @@ -1,6 +1,6 @@ -# Maptiles Developer Documentation +# Tile Map Service Developer Documentation -Maptiles is a tilecache service that provides access to background maps and detailed aerial photos. The service utilizes a standard XYZ [tilescheme](https://en.wikipedia.org/wiki/Tiled_web_map). +Tile Map Service (also kalled Maptiles) is a tilecache service that provides access to background maps and detailed aerial photos. The service utilizes a standard XYZ [tilescheme](https://en.wikipedia.org/wiki/Tiled_web_map). ## Tile URL Format @@ -28,10 +28,6 @@ options: { } ``` -## API Key - -To access the API, request your key [here](https://www.norkart.no/dataoganalyse/). - ## Integration Guides ### QGIS diff --git a/WMS/README.md b/Articles/WMS/README.md similarity index 57% rename from WMS/README.md rename to Articles/WMS/README.md index b7526d3..dbe9d3c 100644 --- a/WMS/README.md +++ b/Articles/WMS/README.md @@ -26,7 +26,7 @@ GET https://waapi.webatlas.no/WMS-Takhelning/?REQUEST=GetCapabilities&SERVICE=WM ``` ### Result: -- an xml with metadata about the service, including supported operations and parameters, and a list of the available layers (too large to show) +- A xml with metadata about the service, including supported operations and parameters, and a list of the available layers (too large to show) ## GetMap: @@ -58,31 +58,87 @@ https://waapi.webatlas.no/wms-takhelning/?REQUEST=GetLegendGraphic&VERSION=1.0.0 ![wms-takhelning-sample-legend-response](./images/geoserver-GetLegendGraphic.png) ## Use Norkart WMS in QGIS or ArcGIS -To use Norkart wms-sevices in QGIS or ArcGIS, you must provide the api key. This is done as follows: -### QGIS -![how-to-use-in-qgis](./images/qgis_config.png) -### ArcGIS -![how-to-use-in-arcgis](./images/arcgis_config.png) +### QGIS ### +To use WMS in QGIS, past the url with your Norkart API key at the end of the url. Make sure to tick the Ignore GetMap/GetTile/GetLegendeGraphic checkbox. -### Other desktop viewers -Gemini and other software have issues adding the &api_key to the URL, so you might want to try to reverse the order. So instead of: +![how-to-use-in-qgis](./images/qgis_config.png) -``` -GET https://waapi.webatlas.no/WMS-Takhelning/?REQUEST=GetCapabilities&SERVICE=WMS&api_key={{API_KEY}} -``` +>[!IMPORTANT] +> Remember to check the Ignore GetMap/GetTile/GetLegendeGraphic checkbox. The map will not be displayed unless this option is ticked! -You can try +### ArcGIS +![how-to-use-in-arcgis](./images/arcgis_config.png) -``` -GET https://waapi.webatlas.no/WMS-Takhelning/?api_key={{API_KEY}}&REQUEST=GetCapabilities&SERVICE=WMS -``` +> +> [!TIP] +> ### Other desktop viewers +> Gemini and other software have issues adding the &api_key to the URL, so you might want to try to reverse the order. So instead of: +> You can try +> +>``` +>GET https://waapi.webatlas.no/WMS-Takhelning/?api_key={{API_KEY}}&REQUEST=GetCapabilities&SERVICE=WMS +>``` + +### Additional Application Examples +Here are a few more examples of how you can use Norkart WMS in different scenarios: + +**Using WMS in Leaflet.js** +````javascript +var map = L.map('map').setView([63.43, 10.39], 13); + +L.tileLayer.wms("https://waapi.webatlas.no/wms-takhelning/", { + layers: 'wms-takhelning:takhelning', + format: 'image/png', + transparent: true, + attribution: '© Norkart', + api_key: '{{API_KEY}}' +}).addTo(map); + +Using WMS in Mapbox GL JS + +map.addSource('wms', { + 'type': 'raster', + 'tiles': [ + 'https://waapi.webatlas.no/wms-takhelning/?SERVICE=WMS&REQUEST=GetMap&VERSION=1.1.1&LAYERS=wms-takhelning:takhelning&FORMAT=image/png&TRANSPARENT=true&BBOX={bbox-epsg-3857}&SRS=EPSG:3857&WIDTH=256&HEIGHT=256&api_key={{API_KEY}}' + ], + 'tileSize': 256 +}); + +map.addLayer({ + 'id': 'wms-layer', + 'type': 'raster', + 'source': 'wms', + 'paint': {} +}); +```` +**Using WMS in OpenLayers** +````javascript +var wmsSource = new ol.source.TileWMS({ + url: 'https://waapi.webatlas.no/wms-takhelning/', + params: {'LAYERS': 'wms-takhelning:takhelning', 'TILED': true, 'api_key': '{{API_KEY}}'}, + serverType: 'geoserver' +}); + +var wmsLayer = new ol.layer.Tile({ + source: wmsSource +}); + +var map = new ol.Map({ + target: 'map', + layers: [wmsLayer], + view: new ol.View({ + center: ol.proj.fromLonLat([10.39, 63.43]), + zoom: 13 + }) +}); +```` ## Useful resources: -- Wms in leaflet: https://leafletjs.com/examples/wms/wms.html -- Wms in mapbox: https://docs.mapbox.com/mapbox-gl-js/example/wms/ -- Geoserver wms-documentation: https://docs.geoserver.org/stable/en/user/services/wms/reference.html +- WMS in leaflet: https://leafletjs.com/examples/wms/wms.html +- WMS in mapbox: https://docs.mapbox.com/mapbox-gl-js/example/wms/ +- Geoserver WMS-documentation: https://docs.geoserver.org/stable/en/user/services/wms/reference.html ## References [1] @@ -94,3 +150,10 @@ https://docs.geoserver.org/stable/en/user/services/wms/reference.html. Geoserver. GetLegendGraphic. https://docs.geoserver.org/latest/en/user/services/wms/get_legend_graphic/index.html#colormap-type-is-ramp + + + + + + + diff --git a/WMS/images/arcgis_config.png b/Articles/WMS/images/arcgis_config.png similarity index 100% rename from WMS/images/arcgis_config.png rename to Articles/WMS/images/arcgis_config.png diff --git a/WMS/images/geoserver-GetLegendGraphic.png b/Articles/WMS/images/geoserver-GetLegendGraphic.png similarity index 100% rename from WMS/images/geoserver-GetLegendGraphic.png rename to Articles/WMS/images/geoserver-GetLegendGraphic.png diff --git a/WMS/images/qgis_config.png b/Articles/WMS/images/qgis_config.png similarity index 100% rename from WMS/images/qgis_config.png rename to Articles/WMS/images/qgis_config.png diff --git a/WMS/images/wms-takhelning-takhelning.png b/Articles/WMS/images/wms-takhelning-takhelning.png similarity index 100% rename from WMS/images/wms-takhelning-takhelning.png rename to Articles/WMS/images/wms-takhelning-takhelning.png diff --git a/matrikkel/matrikkelid.md b/Articles/matrikkel-ID/matrikkelid.md similarity index 100% rename from matrikkel/matrikkelid.md rename to Articles/matrikkel-ID/matrikkelid.md diff --git a/README.md b/README.md index 73dcc15..f76b625 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,37 @@ # Norkart API Documentation -This is our collection of developer documentation, examples and tutorials for some of our public API offerings. See https://www.norkart.no/dataoganalyse/ for product listings, API-keys, contact and support. +Welcome to the Norkart API documentation. This repository contains developer documentation, examples, and tutorials for some of our public API offerings. For product listings, API keys, contact, and support, visit [Norkart Data and Analysis](https://www.norkart.no/dataoganalyse/). -See [code and tutorials](code_and_tutorials) for complete list of code-snippets, examples and tutorials. +## Available Documentation -## Documented API's at github: +### Code Examples and Tutorials +Explore our [code examples and tutorials]() 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. -