GeoJSON+;OpenLayers+;OSM

GeoJSON+;OpenLayers+;OSM,openlayers,openstreetmap,geojson,Openlayers,Openstreetmap,Geojson,这是一个基本示例,在OpenLayers网站上稍作修改 当我使用WMS(r2注释,r3未注释)时,它可以工作 当我使用OSM(r2未注释,r2注释)时,它不会工作 我想使用OSM,我缺少什么 var map = new OpenLayers.Map('map'); //osmLayer = new OpenLayers.Layer.OSM(); osmLayer = new OpenLayers.Layer.WMS("OpenLayers WM

这是一个基本示例,在OpenLayers网站上稍作修改

  • 当我使用WMS(r2注释,r3未注释)时,它可以工作
  • 当我使用OSM(r2未注释,r2注释)时,它不会工作
我想使用OSM,我缺少什么

        var map = new OpenLayers.Map('map');
        //osmLayer = new OpenLayers.Layer.OSM();
        osmLayer = new OpenLayers.Layer.WMS("OpenLayers WMS", "http://vmap0.tiles.osgeo.org/wms/vmap0", {layers: 'basic'});
        map.addLayer(osmLayer);
        map.setCenter(new OpenLayers.LonLat(10, 45), 6);

        var myGeoJSON = {
            "type": "FeatureCollection",
            "features": [
                {"geometry":{
                        "type":"GeometryCollection",
                        "geometries":[
                            {
                                "type":"LineString",
                                "coordinates":
                                    [[11.0878902207, 45.1602390564],
                                     [15.01953125, 48.1298828125]]
                             }
                        ]
                    },
                    "type":"Feature",
                    "properties": {}}                        
                ]
        };

        var geojson_format = new OpenLayers.Format.GeoJSON();
        var vector_layer = new OpenLayers.Layer.Vector();
        map.addLayer(vector_layer);
        vector_layer.addFeatures(geojson_format.read(myGeoJSON));
此代码段可用于具有以下内容的html页面:

<script src="http://openlayers.org/api/OpenLayers.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>

<div style="width: 100%; height: 100%;" id="map"></div>

对于OSM,您需要添加投影内容(在您的示例中,您将lon/lat与OSM混合):

例如:


OpenLayers基本OSM示例
var映射,层;
函数init(){
map=newOpenLayers.map('map');
layer=新的OpenLayers.layer.OSM(“简单OSM映射”);
map.addLayer(层);
地图设置中心(
新OpenLayers.LonLat(-71.147,42.472).转换(
新OpenLayers.投影(“EPSG:4326”),
map.getProjectionObject()文件
), 12
);    
}
基本OSM示例
openstreetmap基本灯光
显示一个简单的OSM映射
此示例显示了一个非常简单的OSM布局,具有最少的控件。

如果您需要添加谷歌地图(mercator),您还需要查看这些地图:

希望这有帮助

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <title>OpenLayers Basic OSM Example</title>
    <link rel="stylesheet" href="../theme/default/style.css" type="text/css">
    <link rel="stylesheet" href="style.css" type="text/css">
    <script src="../OpenLayers.js"></script>
    <script type="text/javascript">
        var map, layer;
        function init(){
            map = new OpenLayers.Map( 'map');
            layer = new OpenLayers.Layer.OSM( "Simple OSM Map");
            map.addLayer(layer);
            map.setCenter(
                new OpenLayers.LonLat(-71.147, 42.472).transform(
                    new OpenLayers.Projection("EPSG:4326"),
                    map.getProjectionObject()
                ), 12
            );    
        }
    </script>
  </head>
  <body onload="init()">
    <h1 id="title">Basic OSM Example</h1>

    <div id="tags">
        openstreetmap basic light
    </div>

    <div id="shortdesc">Show a Simple OSM Map</div>

    <div id="map" class="smallmap"></div>

    <div id="docs">
        <p>This example shows a very simple OSM layout with minimal controls.</p> 
    </div>
  </body>
</html>