The open-source fork of Mapbox GL JS: Interactive maps in the browser, powered by vector tiles and WebGL.

Overview

MapLibre GL

MapLibre GL is a community-led fork derived from mapbox-gl-js before their switch to a non-OSS license.

Migrating from mapbox-gl

If you depend on mapbox-gl directly, simply replace mapbox-gl with maplibre-gl in package.json:

Use

=1.15.2" } ">
  "dependencies": {
-    "mapbox-gl": "^1.13.0"
+    "maplibre-gl": ">=1.15.2"
  }

if it is important to you that the behaviour is similar to mapbox-gl version 1.x.

And replace mapboxgl with maplibregl in your JavaScript and optionally in your HTML/CSS code:

MapLibre GL JS is distributed via unpkg.com. For more informations please see MapLibre GL is on unpkg.com.

- + + - var map = new mapboxgl.Map({ + var map = new maplibregl.Map({ -

Want an example? Have a look at the official MapLibre GL JS Documentation.

Use MapLibre GL JS bindings for React (https://visgl.github.io/react-map-gl/docs/get-started/get-started#using-with-a-mapbox-gl-fork) and Angular (https://github.com/maplibre/ngx-maplibre-gl). Find more at awesome-maplibre.

Roadmap

This project's initial plans are outlined in the Roadmap project. The primary goal is consistency and continued bug fixes and maintenance as we advance.

MapLibre GL is developed following Semantic Versioning (2.0.0).

Getting Involved

Join the #maplibre slack channel at OSMUS: get an invite at https://osmus-slack.herokuapp.com/

Community Leadership

You can find the official status of the backing community and steering committee in the COMMUNITY.md document.

Avoid Fragmentation

If you depend on a free software alternative to mapbox-gl-js, please consider joining our effort! Anyone with a stake in a healthy community-led fork is welcome to help us figure out our next steps. We welcome contributors and leaders! MapLibre GL already represents the combined efforts of a few early fork efforts, and we all benefit from "one project" rather than "our way". If you know of other forks, please reach out to them and direct them here.

Thank you Mapbox πŸ™πŸ½

We'd like to acknowledge the amazing work Mapbox has contributed to open source. The open source community is sad to part ways with them, but we simultaneously feel grateful for everything they already contributed. mapbox-gl-js 1.x is an open source achievment which now lives on as maplibre-gl. We're proud to develop on the shoulders of giants, thank you Mapbox πŸ™‡πŸ½β€β™€οΈ.

Please keep in mind: Unauthorized backports are the biggest threat to the MapLibre project. It is unacceptable to backport code from mapbox-gl-js, which is not covered by the former BSD-3 license. If you are unsure about this issue, please ask!

License

MapLibre GL is licensed under the 3-Clause BSD license.

Comments
  • Shield rotation

    Shield rotation

    Image symbols placed along a line currently rotate with the line, similar to what text along a river or street does. We would like to place multiple images along a line that are always upright. The images are highway shields and highways in the US can have multiple shields. This pull requests is work in progress and facilitates collaboration on the new feature.

    ο»Ώ## Launch Checklist

    • [x] Confirm your changes do not include backports from Mapbox projects (unless with compliant license) - if you are not sure about this, please ask!
    • [x] Briefly describe the changes in this PR.
    • [x] Include before/after visuals or gifs if this PR includes visual changes.
    • [ ] Write tests for all new functionality.
    • [ ] Document any changes to public APIs.
    • [ ] Post benchmark scores.
    • [ ] Manually test the debug page.
    • [ ] Suggest a changelog category: bug/feature/docs/etc. or "skip changelog".
    • [ ] Add an entry inside this element for inclusion in the maplibre-gl-js changelog: <changelog></changelog>.
    opened by wipfli 117
  • Migrate benchmarks

    Migrate benchmarks

    For easier collaboration on migrating the benchmarks, I rebased the work of @xabbu42 on main and create a branch in this repository. Let's continue https://github.com/maplibre/maplibre-gl-js/pull/201 here.

    opened by wipfli 108
  • Migrate to typescript

    Migrate to typescript

    Launch Checklist

    • [x] confirm your changes do not include backports from Mapbox projects (unless with compliant license)
    • [x] document any changes to public APIs:
      • Removed version from library API.
      • Remove support of IE11
    • [ ] post benchmark scores
    • [x] manually test the debug page
    • [x] apply changelog label ('bug', 'feature', 'docs', etc) or use the label 'skip changelog'
    • [x] add an entry inside this element for inclusion in the maplibre-gl-js changelog: <changelog></changelog>

    Motivation and some background:

    The current code run on node 10, the migration to node 14 is difficult since some of the libraries are no longer supported. This is also true regarding documentation of essential libraries such as flow (for typings) and tap (for testing). The goal of this PR is to update the stack to a more widely used technologies and differentiate this library from mapbox-gl to avoid license breach.

    Techonologies

    Typescript for type checking Jest for testing rollup for packaging eslint for code checking

    The following boilerplate code would be used to facilitate the above widely used technologies. https://github.com/VitorLuizC/typescript-library-boilerplate

    This is a very large task and we'd appreciate any help from anyone :-)

    Task by priority:

    • [x] Convert src file from Flow to Typescript
    • [x] Upgrade CI and references script to esm and node 14
    • [x] Make lint pass on all source files
    • [x] Make build pass on tsc including rollup required changes
    • [x] Remove usage of @mapbox/geojson-types and use @types/geosjon.
    • [x] Remove usage of @mapbox/point-geometry and bring it in to this library (after converting it to typescript as this is only one file).
    • [x] ~~Convert test, debug, benchmark code to typescript~~
    • [x] ~~Make all linters pass (not just for the main library) #272~~
    • [x] ~~Make their tsc pass~~
    • [x] ~~Convert tests to use jest #273~~
    • [x] Make all tests pass
    • [x] ~~Remove tap and related code around it #273~~
    • [x] ~~Update dependencies (referenced in package.json) #270~~
    • [x] ~~Change types only declarations to .d.ts files #271~~
    • [ ] Make sure this PR doesn't break how the docs repo is using this repo
    • [x] Make sure @maplibre/style-spec is working
    • [x] Make sure everything is working as expected and merge back to main - see if there are feature that need to be added to close the gap from when this branch started.

    I have decided to reduce the number of changes introduced in this migration - i.e. keep the tests as they are now, do not convert unit tests to typescript. There will be an option later to do all these changes after things starts to work as expected in other PRs.

    opened by HarelM 105
  • Support custom tiles source

    Support custom tiles source

    This PR should facilitate for feature request describe here: Support custom source #29

    I've added documentation above the function it self, I don't know how to convert this to proper documentation. Any help would be appreciated.

    As a side note, since I'm using a patch version of mapbox-gl-js I will only be able to help testing (for example current rc) only after this is merged... Sorry... I would prefer to have all the breaking changes (mainly name changes etc) as soon as possible since I prefer to work in order to migrate to this library only after the breaking changes had occurred to make sure that everything is working once and I won't need to do it in two steps (first only to migrate to this library and the second to make sure I fix things that were broken assuming I want to upgrade to a later version, which I probably will). This is of-course only my point of view and needs...

    opened by HarelM 71
  • Terrain 3D

    Terrain 3D

    A working prototype, which adds 3d-terrain to maplibre-gl with the following features:

    Already done:

    • [x] create a regular 3d-mesh.
    • [x] render all layers, except symbols, into a framebuffer(s), which textures later used on the terrain-mesh.
    • [x] add the third dimension to all symbols/circle/fill-extrusion layers and the collision index.
    • [x] implentation, based on a coords-framebuffer, to unproject screen to mercator coordinates.
    • [x] Elevate camera over terrain.
    • [x] Correct lngLat coordinates in all mouse-events.
    • [x] hide symbols behind mountains.
    • [x] enable/disable terrain mode

    Still open:

    • [ ] Correct calculation of coveringTiles in transform.js.
    • [x] Test/Improve performance.
    • [x] Write a document how the code works in detail.
    • [ ] document any changes to public APIs

    Nice to have, but not on my agenda:

    • tilt more than 60 degrees & implement a sky.
    • add 3d dimension to showTileBoundaries & showCollisionBoxes.
    • ray/triangle calculation for pixel -> mercator projection. If this this done, the coords-framebuffer can be easily transformed to a depth-framebuffer.
    • 3D Camera animations.

    Need Help:

    • confirm all changes do not include backports from Mapbox projects. I think this is already guaranteed, but it needs a confirmation!
    • correct calculation of transform.coveringTiles, because i do not have any math background in this!
    • testing & writing tests.
    • post benchmark scores

    This code is already a work in progress! There are a some of FIXME-3D in code, also this is my first experience in webgl, so i am looking forward for feedback.

    Also this code is not a copy of mapbox-gl 2.0, i initially looked onto the first 3 commits of mapbox-gl 2.0 at 8.Dec.2020, and than i started my work with a very different approach of implementation. For example:

    • ~~all 3d is done with 3d-coordinates. mapbox uses 2d coordinates and calculates the 3d dimension in the shader.~~
    • unproject from screen to mercator coordinates is done via a coordinate-framebuffer, instead of ray/triangle calculation.
    opened by prozessor13 63
  • Terrain 3D

    Terrain 3D

    @prozessor13 thank you for all the work you did to make 3D happen in MapLibre GL JS.

    This pull request is a continuation of #165 with the goal to merge the terrain3d branch into main.

    Demo

    flyTo example

    • [x] Confirm your changes do not include backports from Mapbox projects (unless with compliant license) - if you are not sure about this, please ask!
    opened by wipfli 61
  • Update Development Environment - Support Node v14

    Update Development Environment - Support Node v14

    If I'm right, we don't fully support Node v12+ yet because of the way we integrate ECMAScript modules.

    There are two options since Node v12+: : Via library or via flag. As far as I can see, we use the library esm.

    By the way: Mapbox changed the way to use ECMAScript modules (esm) in PR 10367. They do not use esm any more.

    ~~I have no experience with esm. The last version is almost 2 years old. Nevertheless, I suggest updating to this one, because this way our Node scipts are usable under Node v12+. Not everything runs smoothly with this PR. For example, many tests fail. But maybe so we can better work on supporting Node v12+.~~

    I decided to use "type": "module" in main package.json because it is more future-proof. For this reason, I have had to change Node.js require toES6 import/export in many places. In addition, the specification of file extensions is mandatory.

    Launch Checklist

    • [x] confirm your changes do not include backports from Mapbox projects (unless with compliant license)
    • [x] briefly describe the changes in this PR
    • [ ] write tests for all new functionality -> tests have to be correted
    • [ ] document any changes to public APIs
    • [ ] post benchmark scores
    • [ ] manually test the debug page
    • [x] apply changelog label ('bug', 'feature', 'docs', etc) or use the label 'skip changelog'
    opened by astridx 45
  • Revert commits to fix `test-render`

    Revert commits to fix `test-render`

    This is related to #326, #365. It shouldn't be merged just yet... It should make a lot more tests pass and allow to find other places that were not reverted, I hope...

    Expand all to allow seeing diff in all files:

    for(i=0; i<document.getElementsByClassName('js-button-text').length; i++){ document.getElementsByClassName('js-button-text')[i].click();}
    

    Before typescript commit ref: 49bc4ca45aba6b6af98df7e1e91735dcb0d6f20f

    Latest commit: a12092bdcaa09732f34ad537a5d2e83523d8e7b8

    Diff: https://github.com/maplibre/maplibre-gl-js/compare/49bc4ca45aba6b6af98df7e1e91735dcb0d6f20f...a12092bdcaa09732f34ad537a5d2e83523d8e7b8

    opened by HarelM 42
  • Rename CSS classes from `mapboxgl-*` to `maplibre-*`

    Rename CSS classes from `mapboxgl-*` to `maplibre-*`

    Question to @maplibre/core -- should all CSS classes be renamed to maplibregl-*, or do we want to keep the original mapboxgl-* to be compatible with other code? Would this be a stylistic or a legal requirement? My understanding is that this would be part of the API, and thus could stay as is. Also I suspect this change would be a relatively painful for the endusers.

    enhancement 
    opened by nyurik 36
  • Fix exported typescript typings for version 2.0

    Fix exported typescript typings for version 2.0

    It seems that MapLibre is working as expected when it comes to javascript but the exported typescript typings have changed significantly due to the migration to typescript and they need to be fixed. As a reference, I'm looking at the original typescript typings that existed in this project in version 1.x: https://github.com/maplibre/maplibre-gl-js/blob/cb3a4200bfbc113969e9dcbedae2aa7655f9aa98/src/index.d.ts Which has a lot more types and exported stuff compared to the file generated in types folder after running build-tsc.

    PR Summary to address (#610) last issues:

    1. Improve typing - especially the map movement types, and events.
    2. Remove types folder as it is no longer needed
    3. Introduce dts-build-generator to bundle all the typescript definitions files to a single one
    4. Rename copy-glsl.js and added the functionality of the bundling and some fixed after bundling
    5. Added a package.json file in the dist folder to signal external builder (such as webpack) to treat the output as commonjs (#370)
    6. Renames style spec's es.js to .mjs to allow bundlers to know which type of module this code is expecting to be used.
    opened by HarelM 33
  • Closest tiles disappearing when 3D terrain is used

    Closest tiles disappearing when 3D terrain is used

    When 3D terrain is on, maplibre is removing the closer raster tiles from view. Something to do with the camera being distorted from the viewport? It's like it thinks the closest tiles are out of view.

    The issue is present with exaggeration of 1, but gets dramatically worse by increasing the exaggeration z-factor (TerrainLayer.jsx). Vector basemaps seem immune, but geojson vector layers also disappear in unison with raster basemaps and custom raster tiles.

    The problem has been identified to occur in flat areas which are also down at sea level. All the terrain examples use the Swiss Alps, etc (because it looks awesome), so the camera may just be calibrated to elevations of 5km. Given an elevation of 0-5m, something may not be set up correctly.

    You can fork this demo repo to test the issue, or just zoom to center: [-93.32780,29.8834], pitch:85 using this terrain and a raster imagery basemap.

            type: "raster-dem",
            tiles: ["https://vtc-cdn.maptoolkit.net/terrainrgb/{z}/{x}/{y}.webp"],
    

    https://github.com/openSourcerer9000/MapLibreGL-3D-terrain-tiles-disappearing-issue-demo

    May be related to this algorithm https://github.com/maplibre/maplibre-gl-js/issues/1080?

    image

    maplibre-gl-js version: 2.2.0-pre.2

    browser:Chrome

    bug Terrain 3D 
    opened by openSourcerer9000 31
  • Add pseudo fullscreen fallback

    Add pseudo fullscreen fallback

    requestFullscreen is not supported by iPhones (source: mdn). Because of it, FullscreenControl is not displayed when viewing a map on iphone.

    This PR adds pseudo fullscreen mode as a fallback. Pseudo fullscreen is implemented by CSS. CSS class comes from Leaflet plugin.

    Visuals

    • Macbook - works as before, using requestFullscren

    https://user-images.githubusercontent.com/10419439/192212231-b0273e1b-6753-4465-bc26-7b3f8dddabb0.mov

    • iPhone - using pseudo fullscreen CSS

    https://user-images.githubusercontent.com/10419439/192212167-7c5bbeee-d957-442a-9635-2769887d262d.mov

    Launch Checklist

    • [x] Confirm your changes do not include backports from Mapbox projects (unless with compliant license) - if you are not sure about this, please ask!
    • [x] Briefly describe the changes in this PR.
    • [ ] Include before/after visuals or gifs if this PR includes visual changes.
    • [x] Write tests for all new functionality.
    • [x] Document any changes to public APIs.
    • [ ] Post benchmark scores.
    • [x] Manually test the debug page (tested on MacBook and iPhone).
    • [x] Suggest a changelog category: bug/feature/docs/etc. or "skip changelog": feature
    • [x] Add an entry inside this element for inclusion in the maplibre-gl-js changelog: <changelog></changelog>.
    opened by caspg 7
  • Implement stencil logic for render-to-texture tiles

    Implement stencil logic for render-to-texture tiles

    Currently the the render-to-texture framebuffer only had the depth-buffer attached. With this PR also the stencil-buffer is attached to every render-to-texture framebuffer. This is needed to render on every pixel always only the data from the highest available source-tile.

    • [x] Confirm your changes do not include backports from Mapbox projects (unless with compliant license) - if you are not sure about this, please ask!
    • [ ] Write tests for all new functionality.
    • [ ] Document any changes to public APIs.
    • [x] Manually test the debug page.
    • [ ] Add an entry inside this element for inclusion in the maplibre-gl-js changelog: <changelog></changelog>.
    opened by prozessor13 3
  • Create render-to-texture renderpool to render terrain in paralell

    Create render-to-texture renderpool to render terrain in paralell

    This branch creates a Render-To-Texture render-pool, instead of caching textures in RTT Tiles.

    Old logic: The Terrain class had one framebuffer, and a list of tiles which contained a list of textures. This had two problems:

    • for complicated stylesheets a lot of textures were created, for mobile-phones too much, and they crashed
    • render the textures with only one framebuffer was slow, because serial rendering one by one

    New logic: There exist a Framebuffer/Texture pool that would be reused during rendering, and the tiles only contains indexes to this pool-objects.

    • Now there is a single place to define the amount of created framebuffer/textures. Currently the pool contains 30 objects, not tested if this is too much for mobile phones
    • because of 30 paralell framebuffer objects, and no need of heavily switching textures during rendering the rendering is much faster.

    Also this PR makes my other PR #1301 obsolete.

    • [x] Confirm your changes do not include backports from Mapbox projects (unless with compliant license) - if you are not sure about this, please ask!
    • [x] unit tests - @prozessor13
    • [x] test different stylesheets and corresponding render-to-texture stacks (e.g. which layers are drawn in one pass to texture)
    • [ ] render tests
    • [ ] performance tests
    • [ ] Document any changes to public APIs.
    • [ ] Post benchmark scores.
    • [ ] Add an entry inside this element for inclusion in the maplibre-gl-js changelog: <changelog></changelog>.

    Need help with:

    • [x] test if re-render on style-change works correctly, see #1301 & https://github.com/maplibre/maplibre-gl-js/issues/1461
    • [x] test if web-app crashes are gone, may play with POOL_SIZE in render_to_texture.ts.
    opened by prozessor13 3
  • Using addLayers (osm map, canvas) rather than Model.style for both, causes Maximum call stack size exceeded

    Using addLayers (osm map, canvas) rather than Model.style for both, causes Maximum call stack size exceeded

    maplibre-gl-js version: latest

    browser: chrome 105.0.5195.52

    Steps to Trigger Behavior

    I ran into failures with a canvas layer when using addLayer rather than the style within the Map ctor. I simplified the actual project to two simple "hello" pages. The first places all layers and sources in the Map constructor's style while the second has an empty style in Map's constructor and two addLayers.

    Snap 09 20 22-12 02 43

    1. Run http://backspaces.net/temp/hello.html. Should work fine
    2. Run http://backspaces.net/temp/hello1.html. Fails with:
    3. maplibre-gl.js:92 Uncaught RangeError: Maximum call stack size exceeded at c (maplibre-gl.js:92:17) at p (maplibre-gl.js:105:78) at c (maplibre-gl.js:95:23) at p (maplibre-gl.js:105:78) at c (maplibre-gl.js:95:23) at p (maplibre-gl.js:105:78) at c (maplibre-gl.js:95:23) at p (maplibre-gl.js:105:78) at c (maplibre-gl.js:95:23) at p (maplibre-gl.js:105:78)

    Link to Demonstration

    http://backspaces.net/temp/hello.html http://backspaces.net/temp/hello1.html

    hello uses:

        const map = new maplibregl.Map({
            container: 'map', // container id
            center: center,
            zoom: 6,
    
            style: {
                "version": 8,
                sources: {
                    osm: {
                        type: 'raster',
                        tiles: ['https://a.tile.openstreetmap.org/{z}/{x}/{y}.png'],
                        tileSize: 256,
                        maxzoom: 19,
                        attribution: '&copy; OpenStreetMap Contributors',
                    },
                    canvas: {
                        type: 'canvas',
                        canvas: canvas,
                        coordinates: bboxCoords(bbox),
                    },
                },
                layers: [
                    {
                        id: 'osm',
                        type: 'raster',
                        source: 'osm'
                    },
                    {
                        id: 'canvas',
                        type: 'raster',
                        source: 'canvas'
                    },
                ]
            },
        })
        await mapLoadPromise(map)
    

    while hello1 uses:

        const map = new maplibregl.Map({
            container: 'map', // container id
            center: center,
            zoom: 6,
    
            style: {
                "version": 8,
                sources: {},
                layers: []
            },
        })
        await mapLoadPromise(map)
    
        map.addLayer({
            id: 'osm',
            type: 'raster',
            source: {
                type: 'raster',
                tiles: ['https://a.tile.openstreetmap.org/{z}/{x}/{y}.png'],
                tileSize: 256,
                maxzoom: 19,
                attribution: '&copy; OpenStreetMap Contributors',
            },
        })
        map.addLayer({
            id: 'canvas',
            type: 'raster',
            source: {
                type: 'canvas',
                canvas: canvas,
                coordinates: bboxCoords(bbox),
            }
        })
    

    where mapLoadPromise is

        async function mapLoadPromise(map) {
            return new Promise((resolve, reject) => {
                map.on('load', () => resolve())
            })
        }
    

    Expected Behavior

    Both hello and hello1 should show a simple map with a canvas at the specified geolocation:

    Snap 09 20 22-12 13 40

    Actual Behavior

    The hello example works as it should, while the hello1 example results with

        maplibre-gl.js:92 Uncaught RangeError: Maximum call stack size exceeded
    
    bug PR is more than welcomed 
    opened by backspaces 5
  • create a frame around render-to-texture tiles to avoid stiching on different zoomlevels (2. version)

    create a frame around render-to-texture tiles to avoid stiching on different zoomlevels (2. version)

    This code fixes https://github.com/maplibre/maplibre-gl-js/issues/1602, by creating a frame some pixels down around the terrain-mesh. The height of the frame is calculated in respect of the current zoomlevel. This code should/do not have any performance issues.

    • [x] Confirm your changes do not include backports from Mapbox projects (unless with compliant license) - if you are not sure about this, please ask!
    • [x] Briefly describe the changes in this PR.
    • [x] Write tests for all new functionality.
    • [x] Document any changes to public APIs.
    • [x] Manually test the debug page.
    • [ ] Add an entry inside this element for inclusion in the maplibre-gl-js changelog: <changelog></changelog>.
    Terrain 3D 
    opened by prozessor13 10
  • Incorrect distance field of view calculation for negative elevation

    Incorrect distance field of view calculation for negative elevation

    This is in continue to the following PR which removed the elevation offset from terrain 3D: https://github.com/maplibre/maplibre-gl-js/pull/1578

    The situation can be see in the following diagram: IMG-2568

    And can be reproduced in the local environment here when running npm run start-debug http://localhost:9966/test/debug-pages/terrain-satellite.html#13.45/31.54164/35.33225/49.6/54

    More info in the following comment: https://github.com/maplibre/maplibre-gl-js/pull/1578#issuecomment-1246503321

    bug PR is more than welcomed Terrain 3D 
    opened by HarelM 0
Releases(v3.0.0-pre.0)
A Mapbox GL react native module for creating custom maps

A Mapbox GL react native module for creating custom maps

React Native Mapbox 1.4k Sep 22, 2022
Travel Map Pin Application Built Using React And MapBox

MERN Ozkan's Travel Pin Application Demo: https://ecstatic-swanson-7f143f.netlify.app/ Tech Stack; FrontEnd React MapBox Local Storage Axios TimeagoJS

null 18 Apr 15, 2022
A React binding of mapbox-gl-js

React-mapbox-gl | Documentation | Demos React wrapper for mapbox-gl-js. Components Proxy components (proxy between React and Mapbox API) ReactMapboxGL

Alexandre Rieux 1.8k Sep 24, 2022
React wrapper for mapbox-gl-geocoder for use with react-map-gl

react-map-gl-geocoder React wrapper for mapbox-gl-geocoder for use with react-map-gl. Demos Simple Example - https://codesandbox.io/s/l7p179qr6m Ignor

Sam Miyakawa 116 Sep 28, 2022
React Component Library for Mapbox GL JS

Urbica React Mapbox GL JS React Component Library for Mapbox GL JS. Mapbox GL JS is a JavaScript library that renders interactive maps from vector til

Urbica 383 Sep 20, 2022
πŸ—Ί Mandelbrot set and Julia set explorer made with React and WebGL

Mandelbrot Maps Mandelbrot Maps is an interactive fractal explorer built using React and WebGL.

Joao Maio 9 Aug 13, 2022
5kB WebGL globe lib.

A lightweight (5kB) WebGL globe lib. The name "COBE" stands for Cosmic Background Explorer. Demo and configurations Use with React: https://codesandbo

Shu Ding 1.7k Sep 25, 2022
Open-source, high-resolution Mars explorer built using ArcGIS and React.

Open-source, high-resolution Mars explorer built using ArcGIS and React.

null 33 Sep 2, 2022
Project Travel Companion App - Build and Deploy an advanced Travel Companion Application using Google Maps

Travel Advisor Introduction Build and Deploy an advanced Travel Companion Applic

Ashish Choudhary 2 Mar 13, 2022
A declarative React interface to Google Maps

React Google Maps A declarative React interface to Google Maps. Check it out: Example usage API docs What's new Important Notes This is an alpha relea

Pieter Vanderwerff 222 Oct 1, 2022
react-maps - A map component for React

Maps for React A map component for React, the declarative UI library. Allow your React sites to use Google Maps easily. Example In the render-function

Matti Nelimarkka 44 Feb 17, 2022
React.js Google Maps integration component

react-google-maps React.js Google Maps integration component Introduction Installation Usage & Configuration Changelog The changelog is automatically

Tom Chen 4.5k Sep 29, 2022
A Google Maps component for React.js

React Gmaps A Google Maps component for React.js Features Lazy Google Maps loading Easy to use Installation $ npm install react-gmaps --save Demo http

Michele Bertoli 316 Jul 4, 2022
Companion code to the "How to Write a Google Maps React Component" Tutorial

Google Map React Component Tutorial A declarative Google Map React component using React, lazy-loading dependencies, current-location finder and a tes

Fullstack React 1.6k Sep 26, 2022
ReactJS Maps without external dependencies

Pigeon Maps - ReactJS maps without external dependencies Demo: https://pigeon-maps.js.org/ (using maps from OSM and Stamen) What is it? Are you tired

Marius Andra 3.3k Sep 24, 2022
A React autosuggest for the Google Maps Places API.

React Geosuggest A React autosuggest for the Google Maps Places API. You can also define your own suggests as defaults. Works with Preact, too. Demo L

Ubilabs 1k Sep 15, 2022
React components for Leaflet maps

React Leaflet React components for Leaflet maps. Documentation Getting started API reference Changes See the CHANGELOG file. Contributing See the CONT

Paul Le Cam 4.3k Sep 23, 2022
New markers on tap + history, using React Native Maps for study purposes.

Mobile challenge New markers on tap + history, using React Native Maps for study purposes. Participants | Rafael Ferreira Techs & Libs React Native St

Rafael Ferreira 0 Dec 16, 2021
Simple loader to use google maps services into your react applications

react-google-maps-loader React Component to use google maps services into your react applications using a render prop. Getting started You can downloa

CΓ©dric Delpoux 54 Sep 7, 2022