我有以下动态ColdFusion变量:
var map_lat = '<%cfoutput%>#map_lat#<%/cfoutput%>';
var map_lng = '<%cfoutput%>#map_lng#<%/cfoutput%>';
当收到警告时,它们将返回正确的值。
如果我将这些值硬编码到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
})
});
答案 0 :(得分:1)
某些OL函数对参数数据类型非常敏感。如果认为它是字符串而不是浮点数,则该函数可能会失败-并且通常会静默运行。
您可以通过更改行来解决
center: ol.proj.fromLonLat([map_lng , map_lat]),
到
center: ol.proj.fromLonLat([parseFloat(map_lng) , parseFloat(map_lat)]),