Leaflet: TypeError: координаты должны быть конечными числами - PullRequest
0 голосов
/ 21 января 2020

Я пытаюсь использовать Leaflet с заданной c проекцией EPSG: 2169 (Люреф, или Люксембург). Я увидел, что если я не использую «стандартную» проекцию, такую ​​как WGS84, я должен использовать Proj4Leaflet и привязать его к карте.

Вот что я сделал сейчас:

this.crs = new L.Proj.CRS('EPSG:2169',
'+proj=tmerc +lat_0=49.83333333333334 +lon_0=6.166666666666667 +k=1 +x_0=80000 +y_0=100000 +ellps=intl +towgs84=-189.681,18.3463,-42.7695,-0.33746,-3.09264,2.53861,0.4598 +units=m +no_defs');

this.map = L.map('map', {
  center: [ 74000, 96000 ],
  zoom: 3,
  crs: this.crs,
});

Когда я загружаю страницу с картой, консоль выдает мне следующие ошибки:

Cannot read property '3' of undefined
Cannot read property 'x' of undefined

После некоторого поиска в Google я обнаружил, что должен определить опцию «разрешения». Я не знаю точно, как это используется, но я взял из примера, и вот теперь, как выглядит CRS:

this.crs = new L.Proj.CRS('EPSG:2169',
'+proj=tmerc +lat_0=49.83333333333334 +lon_0=6.166666666666667 +k=1 +x_0=80000 +y_0=100000 +ellps=intl +towgs84=-189.681,18.3463,-42.7695,-0.33746,-3.09264,2.53861,0.4598 +units=m +no_defs',
{
  resolutions: [8192, 4096, 2048, 1024, 512, 256, 128]
});

Теперь, когда карта загружена, у меня есть эта ошибка в консоли:

TypeError: coordinates must be finite numbers

И теперь я не знаю, что делать дальше. У кого-нибудь здесь уже была такая проблема?

Я смотрю на этот рекомендуемый пост: пытаюсь использовать EPSG: 3857 в Leaflet Но я не нашел то, что хочу. Моя цель - подготовить карту в EPSG: 2169, чтобы я мог получить данные Geo Json из WMS GeoServer, которые находятся в этой проекции.

Заранее большое спасибо.

1 Ответ

1 голос
/ 23 января 2020

Proj4Leaflet изменяет отображение CRS карты Leaflet, а не CRS L.LatLng с. Это так же, как Leaflet использует EPSG: 3857 для отображения, но пользователь никогда не видит EPSG: 3857 координат, и указанный центр карты ( и др. ) задается в EPSG: 4326 координат.

Инициализируйте вашу карту, используя соответствующий EPSG: 4326 координат, в вашем случае:

var crs = new L.Proj.CRS('EPSG:2169',
'+proj=tmerc +lat_0=49.83333333333334 +lon_0=6.166666666666667 +k=1 +x_0=80000 +y_0=100000 +ellps=intl +towgs84=-189.681,18.3463,-42.7695,-0.33746,-3.09264,2.53861,0.4598 +units=m +no_defs',
{
  resolutions: [8192, 4096, 2048, 1024, 512, 256, 128]
});

var map = L.map('leaflet', {
  center: [ 49.60, 6.39 ],
  zoom: 3,
  crs: crs,
});
...