动态 lat/lng 进入 Open Layer 脚本

dynamic lat/lng into Open Layer script

我有以下动态 ColdFusion 变量:

var map_lat = '<%cfoutput%>#map_lat#<%/cfoutput%>';
var map_lng = '<%cfoutput%>#map_lng#<%/cfoutput%>';

它们 return 收到警报时的正确值。

如果我将这些值硬编码到 OpenLayers 脚本中,它将如下所示:

var map = new ol.Map({
        target: 'map',
        layers: [
          new ol.layer.Tile({
            source: new ol.source.OSM()
          })
        ],
        view: new ol.View({
          center: ol.proj.fromLonLat([-36.910847, 174.77596]), //hard-coded
          zoom: 4
        })
      });

但是,我想输入变量而不是硬编码,像这样:

var map = new ol.Map({
        target: 'map',
        layers: [
          new ol.layer.Tile({
            source: new ol.source.OSM()
          })
        ],
        view: new ol.View({
          center: ol.proj.fromLonLat([map_lng , map_lat]), // variables
          zoom: 4
        })
      });

这不起作用,我已经尝试了所有我能想到的方法来将这些变量插入其中,包括生成数组、从数组创建字符串等,但没有任何效果。

需要帮助。

更新 - 已解决

var x = parseFloat(map_lng);
var y = parseFloat(map_lat);

var map = new ol.Map({
    target: 'map',
    layers: [
       new ol.layer.Tile({
         source: new ol.source.OSM()
       })
    ],
    view: new ol.View({
       center: ol.proj.fromLonLat([x,y]),
       zoom: 12
    })
});

有些OL函数对参数数据类型非常敏感。如果它被认为是一个字符串而不是一个浮点数,该函数可能会失败——而且通常是默默无闻的。

您可以通过更改行

来修复它
center: ol.proj.fromLonLat([map_lng , map_lat]),

center: ol.proj.fromLonLat([parseFloat(map_lng) , parseFloat(map_lat)]),