标签: mapbox

如何遍历mapbox中的图层数组以侦听click事件?

我是Mapbox API的新手,我正在尝试开发一些东西,其中从服务器返回geojson文件,并在地图上绘制要素。

我已成功在地图上绘制要素。我要做的是浏览所有记录,查看geojson列是否具有值,如果可以,则从服务器获取它,创建一个新层并将其绘制在该层上。

这些都是多边形。我需要做的是在单击一个多边形时触发一个事件,这就是为什么我使用单个图层的原因。这是代码:

<script type="text/javascript">
        L.mapbox.accessToken = 'someKey';
        var map = L.mapbox.map('map', 'someMap')
            .setView([-39.67, -69.26], 4);

        $(document).ready(function(){
            $('header h2').text('Equipment Map');

            $.getJSON('distributor-companies', function (data) {
                var layers = [];
                $.each(data, function(i, item) {
                    if(item.geojson != ''){
                        var file = item.geojson;
                        layers[i] = L.mapbox.featureLayer().addTo(map);
                        $.getJSON('/geojson/' + file, function(data){
                            console.log('layer' + i);
                            layers[i].setGeoJSON(data);
                        });
                    }
                });
                $.each(layers, function(i, item){
                    console.log(item);
                    // item.on('click', function(e){
                    //  alert('hello');
                    // });
                });

                layers[32].on('click', function(e){
                    alert('hello');
                });
                layers[31].on('click', function(e){
                    alert('hello hi');
                });
            });
        });
    </script>
Run Code Online (Sandbox Code Playgroud)

现在,我从分销商-公司路线中获取所有数据,并每次创建一个新层并为每条记录绘制数据。所以最后我剩下很多多边形。

最后,我尝试在运行良好的各个层上分别注册一个click事件侦听器。但是在我试图遍历该层之前的代码不起作用。console.log函数将所有图层显示为对象,但是当我尝试在该项目上注册on …

javascript jquery leaflet mapbox

0
推荐指数
1
解决办法
2204
查看次数

MapBox ESRI数据层

我有一个mapbox,想要在其上显示一层esri数据.我正在从这个json文件中获取数据:

https://gis.usps.com/arcgis/rest/services/EDDM/selectZIP/GPServer/routes/execute?f=json&env%3AoutSR=102100&ZIP=93003&Rte_Box=R&UserName=EDDM

数据['results'] [0] ['value'] ['features']数组看起来像这样:

[{'attributes':{'key':'value'}},{'geometry':{'paths':[[ - 13273770,4064608],[ - 13273762,4064613],....]}}, {'attributes':{'key':'value'}},{'geometry':{'paths':[[ - 13273770,4064608],[ - 13273762,4064613],....]}},{ 'attributes':{'key':'value'}},{'geometry':{'paths':[[ - 13273770,4064608],[ - 13273762,4064613],....]}}}]

我的问题是关于几何数组.那里的数据没有Lat/Lng值(我希望这样),所以我不知道如何将这些添加到我的地图中.我是GIS的新手,到目前为止我所做的研究都指向了SpatialReferences.任何帮助显然非常感谢!

gis json spatial esri mapbox

0
推荐指数
1
解决办法
359
查看次数

当使用传单地图将标记排列在阵列中时,如何在标记单击上打开弹出窗口

大家好,我有一组标记是在.each循环上动态创建的,就像这样。

$.each(data, function(index, element) {
    markerArr[element.id] = L.marker(map.unproject([element.LocationX,element.LocationY],map.getMaxZoom()-4)).addTo(map);
});
Run Code Online (Sandbox Code Playgroud)

我的问题是如何在单击时为每个弹出窗口打开弹出窗口,并在弹出窗口中显示唯一ID?

如果要像这样用唯一的名称声明每个标记,则可以执行此操作。

var marker1 = L.marker([158,395]).addTo(mapl);
var marker2 = L.marker([158,410]).addTo(mapl);
marker1.bindPopup("Kanye West");
marker1.on('click', function (e) {
    this.openPopup();
});
marker2.bindPopup("50 Cent");
marker2.on('click', function (e) {
    this.openPopup();
});
Run Code Online (Sandbox Code Playgroud)

但是我需要能够打开数组中的所有标记。

尝试这样的事情没有运气

markerArr[this].on('click', function (e) {
    this.openPopup();
});
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。

谢谢。

javascript leaflet mapbox

0
推荐指数
1
解决办法
3550
查看次数

从Mapbox-GL-JS中具有多种类型的GeoJSON文件中渲染FeatureCollection

我们目前正在从geojson数据将图层加载到mapbox GL中。如果我们的geojson具有包含点和多边形的要素集合,则由于需要设置图层类型,因此似乎没有办法同时显示mapbox gl。

有没有办法为图层设置多种类型?似乎无法处理多个。

   map.addLayer({
    "id": "route",
    "type": "line", //THIS SEEMS TO BE THE LIMITATION
    "source": "route",
   });
Run Code Online (Sandbox Code Playgroud)

mapbox mapbox-gl mapbox-gl-js

0
推荐指数
1
解决办法
888
查看次数

是否将ArcGIS Map Service纳入MapBox GL API?

有人可以提供代码示例以将ArcGIS Map Service消费到MapBox GL API中吗?谢谢!

arcgis-server mapbox arcgis-js-api mapbox-gl mapbox-gl-js

0
推荐指数
1
解决办法
1191
查看次数

Mapbox.js以错误的顺序返回tile

在最新的Chrome浏览器中使用Mapbox-gl.js时,一切正常.当我想使用默认的mapbox.js实现时,地图图块会混淆并显示完全错误.见截图

Imgur

我完全不知道为什么这对mapbox.js不起作用,而我没有遇到mapbox-gl.js的任何问题

javascript openstreetmap leaflet mapbox

0
推荐指数
1
解决办法
382
查看次数

将tiff上传到mapbox gl js或mapbox.js

我想在地图上添加geotif图像层,我可以在mapbox studio中轻松地做到这一点,有没有办法使用mapbox gl js库来做到这一点。我使用带有mapbox gl js库的以下代码添加了geojson文件:

      map.addSource("quakes", {
      "type": "geojson",
      "data": "http://localhost:3000/Srikakulam.geojson"
      });
Run Code Online (Sandbox Code Playgroud)

对于tiff图像,我找不到类似的解决方案。

我有数百张tiff图片要根据天气和日期动态加载。

mapbox mapbox-gl-js

0
推荐指数
1
解决办法
978
查看次数

Mapbox没有具有此ID的源

我想删除Mapbox地图上的源和图层。我设法删除了所有的源和图层,除了我添加到Mapbox地图中的第一个源和图层。

请注意,我不太擅长使用jQuery $ .post。

这是我添加所有源和图层的方法。

$.post('ajax/marker.php', function(data)
{
    var firstSplit = data.split(",");

    for(i=0;i<firstSplit.length-1;i++)
    {
        var secondSplit = firstSplit[i].split("|");
        var id = secondSplit[0];
        var lat = secondSplit[1];
        var lng = secondSplit[2];

        var point = {
            "type": "Point",
            "coordinates": [lat, lng]
        };

        map.addSource(id, { type: 'geojson', data: point });
        map.addLayer({
            "id": id,
            "type": "symbol",
            "source": id,
            "layout": {
                "icon-image": "airport-15"
            }
        }); 
    }
}); 
Run Code Online (Sandbox Code Playgroud)

记住,我设法查看了Mapbox地图上的所有源和图层。 只是我不能只删除添加到地图的第一个源和图层。我希望外面有人对此有一些想法。谢谢。

我在循环中使用了以下两个语句来删除源和图层。

map.removeSource(id);
map.removeLayer(id);
Run Code Online (Sandbox Code Playgroud)

我做了一个测试,手动删除了第一个源和图层,如下所示,但它不起作用。

map.removeSource('1612280004A');
map.removeLayer('1612280004A');
Run Code Online (Sandbox Code Playgroud)

但是,它适用于下一个源和层。

mapbox mapbox-gl mapbox-gl-js

0
推荐指数
1
解决办法
1430
查看次数

Kotlin:如何请求从模拟器访问ACCESS_FINE_LOCATION?

我正在使用地图,并且在模拟器上运行它时,该地图将无法工作。在我的日志中,我收到一条错误消息,告诉我必须授予对ACCESS_FINE_LOCATION的访问权限。如何在KOTLIN中做到这一点?我只能在使用Java的S / O上找到答案。我得到的错误是:

位置提供者需要ACCESS_FINE_LOCATION权限

android kotlin mapbox android-studio

0
推荐指数
1
解决办法
7928
查看次数

从VC1传递并显示相同的视图到VC2

我有一个视图(在我的情况下为MGLMapview:mapboxView),该视图显示在我的第一个VC中。我希望我的第二个VC显示相同的视图。

所以从VC1到VC2我做到了:

self.VC2.mapView = self.mapView

self.navigationController?.pushViewController(self.VC2, animated: true)
Run Code Online (Sandbox Code Playgroud)

然后在VC2的viewDidLoad中:

view.addSubview(mapView)
Run Code Online (Sandbox Code Playgroud)

我的问题是什么也没出现。但是,当我在第二个VC中打印mapView的大小和高度时,它不为零。

我想念什么吗?

感谢您的帮助

uikit uiview ios mapbox swift

0
推荐指数
1
解决办法
88
查看次数