2015-07-23 2 views
2

Я работаю над расширением для игровой карты, которая отображает активную карту с сервера. Карта работает и не от меня. Важно сказать, что они используют простой CRS для работы вокруг координат игры.Радиус круга в листе не имеет значения

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

Так что я имею этот код в качестве расширения для карты:

var bla = L.circle([0,0], 1000, {'color': '#ffffff'}).addTo(map); 

Как вы можете видеть, это всего лишь тест. Теперь должен быть круг с радиусом 1000 (я думаю, что это на карте «единицы», потому что значение в документах называется «метры»). Но я вижу только круг, но это не более чем точка.

Если установить радиус другой размер, нет никакого эффекта:

var bla = L.circle([0,0], 100000, {'color': '#ffffff'}).addTo(map); 

И даже радиус 1000000000000000 не имеет значения для вычисления радиуса. Отрицательный радиус тоже не работает.

У вас есть идеи?

+0

Я никогда не получал мой примера работает ТБМ, и отказался от этого проекта, потому что, кажется, трудно решить (слишком много усилий). Но несколько человек поддержали ваш ответ, так что это может быть полезно для некоторых людей. – Jonniboy

ответ

4

Это происходит, когда вы используете листовку 0.7 с проекцией L.CRS.Simple.

Они исправили в 1.0 беты, но добавили кучу новых ошибок (например - много leaflet.draw функций плагина отказываются работать с новой версией)

мне удалось найти 2 обходные для этого:

Вариант 1: Обновление до 1.0 бета или выше

Вариант 2: Так что у них есть проекция Земли жёстко в L.Circle, мы также можем взломать листовку-src.js как это:

Изменение FROM

_getLatRadius: function() { 
    return (this._mRadius/40075017) * 360; 
}, 

_getLngRadius: function() { 
    return this._getLatRadius()/Math.cos(L.LatLng.DEG_TO_RAD * this._latlng.lat); 
}, 

К

_getLatRadius: function() { 
    return this._mRadius; 
}, 

_getLngRadius: function() { 
    return this._mRadius; 
}, 

Надеется, что это помогает кому-то

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