Обсуждение:WikiLeaflet
Можно ли доработать расширение так, чтобы оно могло использовать карты других служб (Google Maps, Yahoo! Maps, Yandex Maps), причём переключение бы производилось при просмотре страницы?
Александр Машин 03:33, 5 июля 2011 (UTC)
- Насколько я понимаю обстоятельства, для реализации этой затеи речь шла бы не о простом добавлении нового сéрвера тайлов (в массив
TileServers
в MediaWiki:WikiLeaflet.js), потому что, к сожалению, лицензия всех этих служб (в отличие от MapQuest, например) буквально предписывает использование их собственных API (а не Leaflet). Теоретически возможно, что нынешний код, который сейчас подкачивает Leaflet и WikiLeaflet:
/* *** Отрисовка геокарт [[WikiLeaflet]] *** */
LeafletRoot = '/w/leaflet/';
$(function(){
if ($('.wikileaf').length !== 0){
var WikiLeafletURL = wgScriptPath + '/index.php?title=' +
escape( 'MediaWiki:WikiLeaflet.js' ) +
'&action=raw&ctype=text/javascript&dontcountme=s';
importStylesheet(LeafletRoot + 'leaflet.css');
if ($.browser.msie && ($.browser.version < 9)){
importStylesheet(LeafletRoot + 'leaflet.ie.css');
}
$.ajax({
url: LeafletRoot + 'leaflet.js',
dataType: 'script',
cache: true,
success: function(){
$.ajax({
url: WikiLeafletURL,
dataType: 'script',
cache: true,
success: function(){
wlRender();
}
});
}
});
}
});
может быть дополнен таким образом, чтобы по условию (в зависимости от состояния, переключаемого рядом стоящим переключателем) выполнять альтернативные действия:
- вместо Leaflet подкачивать API выбранного сервера карт (Google, Yandex, Yahoo),
- вместо WikiLeaflet подкачивать скрипт, транслирующий итог работы шаблона {{wl}} не в вызовы API Leaflet, а в вызовы API выбранного сервера карт (Google, Yandex, Yahoo).
На практике у меня в настоящее время нет времени и желания учетверить усилия вышеописанным способом. Нехватка времени вызвана обыкновенною занятостью, а нехватка желания вызывается в основном неприязнью к тому, что эти внешние скрипты:
- больше по объёму, чем Leaflet (например, Яндекс.Карты тащат с собою собственную копию jQuery);
- создают дополнительную дырку в безопасности (выполнение произвольного внешнего джаваскрипта в Традиции по выбору авторов сайтов карт или при атаке типа DNS spoofing на адресацию их хостов);
- имеют частично еврейское расовое происхождение (по меньшей мере, Google да Yandex);
- проприетарны, а не свободны (и скрипты, и карты), поэтому прибегают к регистрации (Yandex) или хотят показывать рекламу (намёк в лицензии гуглокарт);
- используют карты, не поддающиеся вики-уточнению в духе краудсорсинга (и поэтому во многих местах менее точные, чем OSM).
Вследствие этого на ближайшее время (на полгода как минимум) я воздержусь от решения этой задачи. —Mithgol the Webmaster 06:45, 5 июля 2011 (UTC)
P. S. API Yahoo Maps прекратит работу 13 сентября 2011 года. —Mithgol the Webmaster 06:47, 5 июля 2011 (UTC)