Leaflet - получение постоянной ссылки на другой URL - PullRequest
0 голосов
/ 24 октября 2019

Я боролся с проблемой несколько дней. Моя цель - получить мгновенный доступ к указанному местоположению, но на другом сайте.

Я поднял этот запрос здесь:

https://gis.stackexchange.com/questions/339407/adding-permalink-attribution-to-the-leaflet-map-in-order-to-reach-another-url-pe

https://gis.stackexchange.com/questions/339126/link-to-another-url-permalink-in-leaflet

поставить без ответа, к сожалению.

Например: моя карта Leaflet имеет следующую постоянную ссылку:

http://localhost/fl/MDU/1.0/#52.54463,-0.21356,11z

и теперь я хочу создать ссылку, котораянемедленно доставь меня в то же место в ie;windy.com https://www.windy.com/?52.545,-0.214,11

peakfinder.org |https://www.peakfinder.org/?lat=52.2898&lng=0.1698&azi=181&zoom=5&ele=6&cfg=rs&name=Finsteraarhorn

suncalc.org https://www.suncalc.org/#/52.5446,-0.2136,11/2019.10.24/15:00/1/0

и т. Д.

Как видно, все эти сайты имеют одинаковые координаты в постоянной ссылке.

По сути, аналогом является плагин Street View для Leaflet, который выглядит следующим образом:

https://github.com/Zverik/leaflet-streetview

, где нажатие кнопки приводит вас в то же место в Street View.

Я полагаю, что несколько лет назад похожая проблема была связана с Map Jumper:

https://wiki.openstreetmap.org/wiki/MapJumper

, чтобы достичь хотя бы еще одного слоя карты

https://wiki.openstreetmap.org/wiki/Layer_URL_parameter

но похоже, что построитель перемычек карт больше не разрабатывается.

По сути, мне сообщили, что существует библиотека, которая может быть полезна для меня.

ЭтоPermalinkAttribution.js

https://raw.githubusercontent.com/MapBBCode/mapbbcode/master/src/controls/PermalinkAttribution.js

Внутри есть код, который может помочь:

  for (var i in this._attributions) {
        if (this._attributions[i]) {
            // make permalink for openstreetmap
            if( i.indexOf('/openstreetmap.org') > 0 || 
   i.indexOf('/www.openstreetmap.org') > 0 ) {
                var permalink = 
   'http://www.openstreetmap.org/#map={zoom}/{lat}/{lon}';
                i = i.replace(/(['"])http[^'"]+openstreetmap.org[^'"]*(['"])/, '$1' + permalink + '$2');
                if( this._map.options.attributionEditLink ) {
                    var editlink = permalink.replace('#', 'edit#');
                    i = i.replace(/(openstreetmap.org[^'"]*(['"])[^>]*>[^<]+<\/a>)/, '$1 (<a href=$2' + editlink + '$2 target=$2osmedit$2>Edit</a>)');
                }
            }
            var latlng = this._map.getCenter();
            i = i.replace(/\{zoom\}/g, this._map.getZoom()).replace(/\{lat\}/g, L.Util.formatNum(latlng.lat, 4)).replace(/\{lon\}/g, L.Util.formatNum(latlng.lng, 4));
            attribs.push(i);
        }
    }

, поэтому я пытался прикрепить его к своей карте:

.... и далее ....

   L.Control.PermalinkAttribution({position:'topright'}).addTo(map);

но, к сожалению, на пустой карте ничего нет.

Я полагаю, чтоДолжна появиться некоторая кнопка.

Консоль говорит:

ncaught TypeError: this.callInitHooks не является функцией в Function.i (leaflet.js: 5) в (index): 49

https://github.com/Leaflet/Leaflet.draw/issues/934

где (индекс): 49 примерно равно:

   L.Control.PermalinkAttribution({position:'topright'}).addTo(map);

Не могли бы вы помочь мне разобраться с этим?

Спасибоочень заранее enter image description here

...