在 Mapbox GL JS 中加载本地 geojson 文件

问题描述 投票:0回答:2

我试图在 Mapbox GL JS 中加载本地保存的 geojson 文件,但是在浏览器中加载时它没有显示。当我换出“数据”的实时 URL 时它起作用,但是当我引用本地文件时它不起作用。我已经检查过本地文件确实有效并且确实存在。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Add a polygon to a map using a GeoJSON source</title>
    <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no">
    <link href="https://api.mapbox.com/mapbox-gl-js/v2.13.0/mapbox-gl.css" rel="stylesheet">
    <script src="https://api.mapbox.com/mapbox-gl-js/v2.13.0/mapbox-gl.js"></script>
    <style>
        body {
            margin: 0;
            padding: 0;
        }

        #map {
            position: absolute;
            top: 0;
            bottom: 0;
            width: 100%;
        }
    </style>
</head>
<body>
    <div id="map"></div>

    <script>

        mapboxgl.accessToken = 'pk.eyJ1IjoiYWRhbWJydWVja25lciIsImEiOiJjbGVoNTYwaTUwcm8zM3htejV0MHpxY2RiIn0.XMLudwO9aIRQquhkKGEnVg';
        var map = new mapboxgl.Map({
            container: 'map',
            // Choose from Mapbox's core styles, or make your own style with Mapbox Studio
            style: 'mapbox://styles/mapbox/dark-v11',
            zoom: 10,
            center: [-73.98, 40.76],
            //projection: 'globe'
        });

        map.on('load', () => {

            var dataGJ = 'data/borough-boundaries.geojson';

            // add a source layer for the borough boundaries
            map.addSource('borough-boundaries', {
                type: 'geojson',
                data: dataGJ
                //data: 'https://data.cityofnewyork.us/api/geospatial/tqmj-j8zm?method=export&format=GeoJSON'
            })

            map.addLayer({
                'id': 'borough-boundaries-fill',
                'type': 'fill',
                'source': 'borough-boundaries',
                'paint': {
                    'fill-color': 'green',
                }
            })
        });
    </script>

</body>
</html>`

我尝试在本地保存文件并在代码中引用它,但它实际上并没有在浏览器中加载

mapbox mapbox-gl-js mapbox-gl
2个回答
0
投票

如果@Steve 的解决方案不起作用,请尝试参考这个例子 我过去写的。它从本地路径(index.html 中数据的相对路径)呈现数据。我没有使用 map.addSource() ,我只是在 map.addLayer() 中指定了源,如下所示。

map.on('load', () => {
        map.addLayer({
          id: 'restaurant',
          type: 'circle',
          source: {
            type: 'geojson',
            data: 'data/chainness_point_2021.geojson' 
          }
        });

0
投票

在 Mapbox GL 样式中,数据 URL 需要是绝对的:

http://localhost/data/borough-boundaries.geojson
或类似的。

© www.soinside.com 2019 - 2024. All rights reserved.