динамический лат / лнг в скрипт Open Layer - PullRequest
2 голосов
/ 07 июня 2019

У меня есть следующие динамические переменные 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
    })
});

1 Ответ

1 голос
/ 08 июня 2019

Некоторые функции OL действительно чувствительны к типу параметра. Если считается, что это строка, а не число с плавающей запятой, функция может завершиться с ошибкой - и часто молча.

Вы можете исправить это, изменив строку

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

до

center: ol.proj.fromLonLat([parseFloat(map_lng) , parseFloat(map_lat)]),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...