Обсуждение: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)