Javascript 无法使用OpenLayers 3显示分划

Javascript 无法使用OpenLayers 3显示分划,javascript,openlayers-3,Javascript,Openlayers 3,这个问题与其说是OpenLayer问题,不如说是javascript问题。我想 该示例仅适用于我自己的WMS服务器: 在我的项目中,“map”对象设置在map.js文件中,加载在graticule.js文件之前的index.html中。它按预期显示地图 var map = new ol.Map({ layers: [ new ol.layer.Tile({ source: new ol.source.OSM() }) ],

这个问题与其说是OpenLayer问题,不如说是javascript问题。我想

该示例仅适用于我自己的WMS服务器:

在我的项目中,“map”对象设置在map.js文件中,加载在graticule.js文件之前的index.html中。它按预期显示地图

var map = new ol.Map({
    layers: [
        new ol.layer.Tile({
            source: new ol.source.OSM()
        })
    ],
    target: 'map',
});
现在,我在graticule.js中编写了非常简单的代码

"use Strict";
var graticule = new ol.Graticule();
graticule.setMap(map);
map.getViewPort().style.cursor = 'crosshair';
好了,现在有趣的部分是: 我可以看到十字线(所以map对象是ok的!),但是setMap(map)只是在调试控制台中抛出一个错误“TypeError:a is null”

我不是Javascript专家,所以这可能是一个相对愚蠢的原因

请帮帮我,我卡住了。

问题解决了

我在view属性中使用了ol.proj.Projection,但我需要直接使用字符串投影代码:

var view = new ol.View({
    center: center,
    zoom: 6,
    projection: 'EPSG:4326'
});

就在
gracile.setMap(map)
之前,执行
控制台.log(map)
并检查控制台是否已加载。如果它在单独的文件中,那么它也可能不在范围内。您应该发布这两个文件。正如我所说,map对象在范围内,因为我可以更改光标。js包含了创建一个带有一个图层的OpenLayer地图的非常基本的代码片段。如果我记录map对象,我可以看到它的属性(以带有a、b、c、d变量的缩小形式,这是一个线索吗?)?因此,我们可以创建一个JSFIDLE并对其进行调试!你的地图视图在哪里?而且,它似乎对我很有效: