compiler-errors - 引用错误: OpenLayers is not defined while using osm layer

标签 compiler-errors openstreetmap openlayers-3

我正在使用 openLayer3 和 osm 来绘制 map ,现在尝试在 map 上绘制折线

1:多段线未显示,而且我在浏览器中收到错误 ReferenceError:未定义 OpenLayers

下面是以下代码:

<!DOCTYPE html>
<html>
<head>
    <title>Rotation example</title>
</head>
<body>
<div id="map" class="map"></div>
<script src="http://openlayers.org/en/v3.11.2/build/ol.js"></script>
<script>
<!-- code to draw the polyline on the map-->

    var lineLayer = new OpenLayers.Layer.Vector("Line Layer");
    map.addLayer(lineLayer);
    map.addControl(new OpenLayers.Control.DrawFeature(lineLayer, OpenLayers.Handler.Path));
    var points = new Array(
            new OpenLayers.Geometry.Point(103.987305, 1.355333),
            new OpenLayers.Geometry.Point(103.987262, 1.354432)
    );

    var line = new OpenLayers.Geometry.LineString(points);
    var style = {
        strokeColor: 'white',
        strokeOpacity: 0.5,
        strokeWidth: 5
    };
    var lineFeature = new OpenLayers.Feature.Vector(line, null, style);
    lineLayer.addFeatures([lineFeature]);

    var map = new ol.Map({
        layers: [
            new ol.layer.Tile({
                source: new ol.source.OSM()
            }),
          lineLayer 
        ],

        target: 'map',
        controls: ol.control.defaults({
            attributionOptions: /** @type {olx.control.AttributionOptions} */ ({
                collapsible: false,

            })
        }),
        view: new ol.View({
            center: ol.proj.fromLonLat([103.986908, 1.353199]),
            rotation: 68*Math.PI/180,
            zoom: 18
        })
    });



</script>

</body>
</html>

我是新手,请指出我哪里出错了

最佳答案

请注意,OpenLayers 2 和 3 有不同的 API。您的代码位于 OpenLayers 2 中,并且您已加载 OpanLayers 3(ol.js) 脚本。以ol3为例,查看源码here 。 如果您使用的是 OpenLayers 2,请使用以下语法来声明 map 。

<!DOCTYPE html>
<html>
<head>
<title>Rotation example</title>
</head>
<body>
<div id="map" class="map"></div>
<script src="http://dev.openlayers.org/OpenLayers.js"></script>
<script>
<!-- code to draw the polyline on the map-->

var   map = new OpenLayers.Map({
   div: "map",
  allOverlays: true
});

var osm = new OpenLayers.Layer.OSM();
var gmap = new OpenLayers.Layer.Google("Google Streets", {visibility: false});

// note that first layer must be visible
map.addLayers([osm, gmap]);

map.addControl(new OpenLayers.Control.LayerSwitcher());
map.zoomToMaxExtent();



</script>

</body>
</html>

关于compiler-errors - 引用错误: OpenLayers is not defined while using osm layer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34412563/

相关文章:

C++ typedef 和模板

makefile - 大型项目的 FORTRAN Makefile

android - 使用 OSM 的公共(public)交通路线

openstreetmap - 从 OpenStreetMap 加载所有图层信息

compiler-errors - 基本 ocaml 程序未编译

javascript - JSON.parse() 不会接受有效的 JSON

OpenStreetMap 的 Flash 库

javascript - 开放层 3 : How to change/set the style of vector map

javascript - OpenLayers 3.13v : issue with ol. 格式.GeoJSON()

google-maps - 打开第 3 层搜索功能以查找 map 位置?