2016-11-08 3 views
2
map.layerPointToLatLng(map.latLngToLayerPoint(L.latLng(40.687, -73.9035))) 

Результаты вточность листовки преобразования измерений

{лат: 40.686886382151116, LNG: -73.90228271484375}

imprecizeness, кажется неоправданно высокой, особенно для долготы.

map.getZoom() 

приводит к

map.getSize() 

приводит к

{х: 1335, Y: 430}

Есть ли способ повысить точность?

ответ

3

Если я правильно понял, вы сначала конвертируете свой LatLng в позицию пикселя на текущем виде карты (зум 9, независимо от размеров порта просмотра).

Затем вы преобразовываете это положение пикселей в LatLng и замечаете несоответствие с вашим оригинальным LatLng.

Мне кажется, что вы просто наблюдать эффект пиксельного округления: map.latLngToLayerPoint даст вам целого пиксельных координат, следовательно, ваша точность не будет лучше, чем то, что покрывает пиксель с точкой зрения фактического расстояния.

При увеличении масштаба 9 и Нью-Йорка (40,687) масштаб составляет около 20 км для 86 пикселей, что составляет около 230 м на пиксель.

Расстояние между координатами 2 LatLng, о которых вы сообщаете, составляет около 103 м. Поэтому он находится в пределах одного пикселя.

Живая демонстрация: https://jsfiddle.net/3v7hd2vx/149/ (результаты выводятся в консоли)

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

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