2015-03-31 5 views
0

Я работаю над лифтом в первый раз и сталкиваюсь с проблемой с кругами рисования и редактированием (изменение местоположения круга).лист чертежа листка/редактирование вопрос

Проблемы я столкнулся являются: -

  1. Редактирование (перемещение) круг из одного места в другое меняет радиус.
    Примечание: Попробуйте создать круг поверх карты в данной скрипке, а затем переместите его в нижнюю часть, нажав кнопку редактирования.

  2. Если я создаю круг в верхней части карты, он отлично работает. Но если я создаю круг в нижней части карты, он печатает только один DOT на карте. Я проверил несколько примеров, и он отлично работает везде.
    Here is the working example где создание круга и движущийся круг полностью прекрасны.

Я не использую географическую карту, такую ​​как карты google. Я использую и статическое изображение, так как это мое требование к проекту.

Вот fiddle of my code.

Просто используя следующий код, чтобы включить рисунок круг:

enabled : this.options.circle, 
handler : new L.Draw.Circle(map,this.options.circle), 
title : L.drawLocal.draw.toolbar.buttons.circle 

ответ

0

То, что вы видите, это искажение на расстоянии присущий проекции Меркатора (и проекции Меркатора Google на основе от него, что присуще большинству интернет-карт). Поскольку ваша карта начинается с увеличения 1, перетаскивание маркера круга с севера на юг вызывает много искажений.

Таким образом, вместо привязки вашего изображения к глобальному ограничивающему прямоугольнику, попробуйте привязать его к чему-то значительно меньшему. В вашем случае вы добавляете наложение изображения относительно maxZoom, поэтому, увеличивая maxZoom, ваше изображение будет наложено на меньшую область земного шара, и вы увидите меньше (или вообще нет) искажений в широтах.

Я изменил MaxZoom от 4 до 14, а результат выглядел как он работал хорошо: fiddle here: вар ш = 553, Н = 329, URL = 'https://kathleenmillar.files.wordpress.com/2012/10/picture2.png';

var map = L.map('map', { 
     minZoom : 10, 
     maxZoom : 14, 
     center : [ w/2, h/2 ], 
     zoom : 11, 
     crs : L.CRS.Simple 

    }); 

    // calculate the edges of the image, in coordinate space 
    var southWest = map.unproject([ 0, h ], map.getMaxZoom() - 3); 
    var northEast = map.unproject([ w, 0 ], map.getMaxZoom() - 3); 
    var bounds = new L.LatLngBounds(southWest, northEast); 
+0

Можете ли вы предложить, чтобы решить, как решить эту проблему? Пожалуйста, проверьте скрипту, если это возможно. –

+0

Обновлен мой ответ со ссылкой на пересмотренную скрипку. –

+0

Кстати, пригодился для использования листовки для архитектурного рендеринга. –

Смежные вопросы