当前位置: 首页 > 知识库问答 >
问题:

多边形GeoJSON功能将加载到控制台中,但不会显示在传单中

闾丘霖
2023-03-14

GIS数据和python对我来说是老帽子,但我对网络开发和地理空间网络应用程序非常陌生。

我已经学习了一个教程和一个类,我正在学习下面的脚本,但是我无法在传单中显示生成的geojson对象(多边形层)。但是,我可以将多边形层的所有功能记录到控制台。此外,在控制台中,我可以清楚地看到geojson对象的正确类型、属性和坐标数组。我还可以清楚地看到控制台中传单地图对象中的所有功能。

任何意见都将不胜感激。如果需要,我很乐意发布getData.php代码。我只是不认为这是问题所在。

var map,
            fieldsin = ["campus_nam", "status", "schnumber", "type"],
            autocomplete = [];

        $(document).ready(initialize);

        function initialize(){
            map = L.map("mapdiv", {
                center: [36.10, -80.25],
                zoom: 12
            });
            var backgroundLayer = L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png').addTo(map);

            //adding postgresql layers to map with getData.php
            getData(fieldsin);
        };

        function getData(fieldsin){
            $.ajax({
                url: "php/getData.php",
                data: { table: "public.school_campus", fields: fieldsin },
                success: function(data){
                    mapData(data);
                }
            })
        };
        function mapData(data){
            //remove existing map layers
            map.eachLayer(function(layer){
                //if not the tile layer
                if (typeof layer._url === "undefined"){
                    map.removeLayer(layer);
                }
            })

            //create geojson container object
            var geojson = {
                "type": "FeatureCollection",
                "features": []
            };

            //split data into features
            var dataArray = data.split(", ;");
            //pop off the last value of the array because it is an empty string.
            dataArray.pop();
            //build geojson features
            dataArray.forEach(function(d){

                d = d.split(", "); //split the comma seperated data string up into individual attribute values
                var test = d[fieldsin.length].concat("}");

                //feature object container
                var feature = {
                    "type": "Feature",
                    "properties": {}, //properties object container
                    //"geometry": JSON.parse(d[fieldsin.length]) //parse geometry
                    "geometry": JSON.parse(d[fieldsin.length]) //parse geometry
                };

                //bulding properties for properties container above
                for (var i=0; i<fieldsin.length; i++){
                    feature.properties[fieldsin[i]] = d[i];
                };

                //add feature names to autocomplete list
                if ($.inArray(feature.properties.campus_nam, autocomplete) == -1){
                    autocomplete.push(feature.properties.campus_nam);
                };

                //console.log(feature.geometry)

                geojson.features.push(feature);

                //var campusLayer = L.geoJSON(geojson).addTo(map);
                var campusLayer = L.geoJSON(geojson, {
                    style: {
                        fillColor: "#CC9900",
                        color: "#66ffff",
                        weight: 1
                    },
                    onEachFeature: function (feature, layer) {
                        var html = "";
                        for (prop in feature.properties){
                            html += prop+": "+feature.properties[prop]+"<br>";
                        };
                        layer.bindPopup(html);
                    }
                }).addTo(map);
            });
        };

共有1个答案

公羊俊
2023-03-14

添加生成的GeoJSON对象的示例肯定会有助于理解您的情况。

但是我高度怀疑你只是简单地颠倒了坐标:

  • 传单要求[纬度,经度]顺序
  • GeoJSON需要[经度,纬度]顺序

另见https://macwright.org/lonlat/

因此,很有可能你的小册子GeoJSON图层组实际上被添加到你的地图上,但是你必须缩小才能在完全不同的地方看到你的特征,并且被扭曲了。

看起来您还没有为传单地图实例指定适当的CRS,或者您需要将后端的坐标转换为传单的默认EPSG:3857。

请注意,GeoJSON规范请求WGS84 CRS,这与EPSG:3857的输入相同。

 类似资料:
  • 本文向大家介绍leaflet加载geojson叠加显示功能代码,包括了leaflet加载geojson叠加显示功能代码的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了leaflet加载geojson叠加显示功能代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 geojson需要先制作shp,然后导入下面网站生成geojson。 ht

  • 我正在使用谷歌地图应用编程接口使用地理JSON数据层将多个多边形加载到地图中。这些多边形中的一些在某些区域重叠。当用户单击多个多边形内部的点时,我希望通过单击事件在InfoBox中显示属性(名称、标签等)。 我想显示给定点的所有多边形的属性。当前,当我单击一个点时,我只能看到一个多边形,尽管该点位于多个多边形的内部。 如何使用Google Maps API v3访问所有多边形的所有属性? 示例Ge

  • 问题内容: 我在Windows 10上运行Python2.7,使用Anaconda进行环境和大多数pkg管理。升级了许多软件包后,我的ipython控制台现在无法在任何IDE或控制台中启动。当我尝试在控制台上运行它时,出现此错误: 我尝试做的第一件事是: 输出: 我已经卸载并重新安装了ipython 和 仍然行不通。请帮忙! 问题答案: 尝试这个

  • 下面是我使用的代码: 有办法让它起作用吗?在中似乎没有简单的方法来获取多边形的边界。

  • 我有一些简单的Spring Boot项目,其中包含H2db文件和位置/数据库/数据库。mv。db(/来自我的项目总监)。应用属性为: 所以,Spring Boot应用程序可以处理其中的表,并将数据存储在DB文件中。本地主机控制台:8080/h2也显示它。但我对IDEA有问题:IDEA只通过绝对名称获得连接(带有url jdbc的嵌入式源代码:h2:~/Documents/projects/java