Openlayers OpenLayer+;OpenStreetMap+;自定义形状文件

Openlayers OpenLayer+;OpenStreetMap+;自定义形状文件,openlayers,openstreetmap,shapefile,Openlayers,Openstreetmap,Shapefile,我从地图开始。我想看一张法国地图,上面有一个个性化的图层 我已经有了shapefile格式的自定义图层。 我根本不知道是否必须创建OpenStreetMap服务器,或者是否可以直接使用web应用程序 你能给我一个用我的额外图层shapefile格式映射显示的起点吗 我想这项任务很复杂,但你必须从 非常感谢如果您希望在shapefile层上添加OpenStreetMap(OSM),只需添加以下代码行 var osm = new OpenLayers.Layer.OSM(); map.addLaye

我从地图开始。我想看一张法国地图,上面有一个个性化的图层

我已经有了shapefile格式的自定义图层。 我根本不知道是否必须创建OpenStreetMap服务器,或者是否可以直接使用web应用程序

你能给我一个用我的额外图层shapefile格式映射显示的起点吗

我想这项任务很复杂,但你必须从


非常感谢

如果您希望在shapefile层上添加OpenStreetMap(OSM),只需添加以下代码行

var osm = new OpenLayers.Layer.OSM();
map.addLayer(osm);

虽然我不明白,为什么您需要为创建OpenStreetMap服务器?

您不需要自己创建OpenStreetMap服务器


如果要在地图上显示自定义图层,请使用
google
openstreetmap
作为基本图层,并在地图上显示图层(来自形状文件)。

这取决于您要执行的操作。它是一个大的形状文件吗

在创建openlayers地图时,可以执行以下操作:

  • 使用公共openstreetmap服务器作为背景平铺(默认的OSM层实现),并在OSM中添加要素层(点、多边形等)作为矢量要素层。要从形状文件中提取矢量特征,可以:
    • 以基于GIS的格式将它们预加载到数据库中。这允许您在执行边界框查询时为功能提供服务,如果您有1000/10000个以上的功能,这是必需的
    • 将形状文件转换为openlayers可读的格式(在浏览器中使用,或使用ogr2ogr等工具进行预转换)
  • 或者,如果您不需要与这些功能交互,您可以将您的数据与OSM数据相结合,并创建自定义分幅。这对于浏览器来说更轻,但相当复杂(读取数据库中的所有OSM数据,使用mapnik生成平铺)
您可以使用: 首先,将shp文件转换为geojson数据 然后将数据添加到地图中

   var map = new ol.Map({
    layers: [
        new ol.layer.Tile({
            source: new ol.source.OSM()
        })
    ],
    target: 'map',
    view: new ol.View({
        center: [0, 0],
        zoom: 5
    })
});

loadshp({
    url: 'demo/10tnvillage.zip',
    encoding: 'big5',
    EPSG: 3826
}, function(data) {
    var feature = new ol.format.GeoJSON().readFeatures(data, {
        featureProjection: 'EPSG:3857'
    });
    var layer = new ol.layer.Vector({
        source: new ol.source.Vector({
            features: feature
        })
    });
    map.addLayer(layer);

    var extent = layer.getSource().getExtent();
    map.getView().fit(extent, map.getSize());
});