Я боролся с проблемой несколько дней. Моя цель - получить мгновенный доступ к указанному местоположению, но на другом сайте.
Я поднял этот запрос здесь:
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);
Не могли бы вы помочь мне разобраться с этим?
Спасибоочень заранее