学习 leaflet-3

       使用GeoJSON和Leaflet   

       学习如何创建从GeoJSON对象创建的地图矢量并与其交互

        首先了解geojson:

        GeoJSON是基于JavaScript 对象表示法的地理空间信息数据交换格式。一个完整的GeoJSON数据结构总是一个(JSON术语里的)对象。对每个成员来说,名字总是字符串。成员的值要么是字符串、数字、对象、数组,要么是下面文本常量中的一个:"true","false"和"null"。数组是由值是上面所说的元素组成。

        例如:

{
  "type": "Feature",
  "geometry": {
    "type": "Point",
    "coordinates": [125.6, 10.1]
  },
  "properties": {
    "name": "Dinagat Islands"
  }
}

           GeoJSON总是由一个单独的对象组成。这个对象(指的是下面的GeoJSON对象)表示几何、特征或者特征集合。

           GeoJSON对象可能有任何数目成员(名/值对)。

           GeoJSON对象必须由一个名字为"type"的成员。这个成员的值是由GeoJSON对象的类型所确定的字符串。

           type成员的值必须是下面之一:"Point", "MultiPoint", "LineString", "MultiLineString", "Polygon",    "MultiPolygon",   "GeometryCollection", "Feature", 或者 "FeatureCollection"。这儿type成员值必须如这儿所示。

           GeoJSON对象可能有一个可选的"crs"成员,它的值必须是一个坐标参考系统的对象。

           GeoJSON对象可能有一个"bbox"成员,它的值必须是边界框数组。

           几何是一种GeoJSON对象,这时type成员的值是下面字符串之一:"Point", "MultiPoint", "LineString", "MultiLineString",  "Polygon", "MultiPolygon", 或者"GeometryCollection"。

           除了“GeometryCollection”外的其他任何类型的GeoJSON几何对象必须由一个名字为"coordinates"的成员。coordinates成员的值总是数组。这个数组里的元素的结构由几何类型来确定。

           GeoJSON对象的坐标参考系统(CRS)是由它的"crs"成员(指的是下面的CRS对象)来确定的。如果对象没有crs成员,那么它的父对象或者祖父对象的crs成员可能被获取作为它的crs。如果这样还没有获得crs成员,那么默认的CRS将应用到GeoJSON对象。

            Leaflet支持上述所有GeoJSON类型,但FeatureFeatureCollections的效果最好,因为它们允许您使用一组属性来描述要素我们甚至可以使用这些属性来设计我们的Leaflet矢量。

            下面是一个简单的geojson功能的例子

var geojsonFeature = {
    "type": "Feature",
    "properties": {
        "name": "Coors Field",
        "amenity": "Baseball Stadium",
        "popupContent": "This is where the Rockies play!"
    },
    "geometry": {
        "type": "Point",
        "coordinates": [-104.99404, 39.75621]
    }
};

               GeoJSON对象通过GeoJSON图层添加到地图中要创建它并将其添加到地图:

L.geoJSON(geojsonFeature).addTo(map);

               GeoJSON对象也可以作为有效的GeoJSON对象数组传递。

var myLines = [{
    "type": "LineString",
    "coordinates": [[-100, 40], [-105, 45], [-110, 55]]
}, {
    "type": "LineString",
    "coordinates": [[-105, 40], [-110, 45], [-115, 55]]
}];

                或者,我们可以创建一个空的GeoJSON图层并将其分配给一个变量,以便我们可以在稍后添加更多功能。

var myLayer = L.geoJSON().addTo(map);
myLayer.addData(geojsonFeature);

                


















 

        

 

 

posted @ 2018-04-23 17:06  tcyA  阅读(199)  评论(0编辑  收藏  举报