2015-04-13 2 views
1

Я использую mapbox.js для создания карты voronoi. Тем не менее, у меня возникают проблемы с точностью моих прогнозов от широты/долготы до пикселей на моем экране, поскольку точность - это только int вместо float. Это приводит к тому, что точки слегка меняются при масштабировании в/из, что приводит к изменению общей карты voronoi!Проецирование lat/long в пикселях с точностью поплавка вместо int

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

var voronoi = d3.geom.voronoi() 
    .x(function (d) { 
     return d.x; 
    }) 
    .y(function (d) { 
     return d.y; 
    }); 

filteredPoints.forEach(function (d) { 
    var latlng = new L.LatLng(d.latitude, d.longitude); 
    var point = map.latLngToLayerPoint(latlng); 
    d.x = point.x; 
    d.y = point.y; 
} 

voronoi(filteredPoints).forEach(function (d) { 
      d.point.cell = d; 
}); 
+0

Точности что? Экран пикселя x, y? Вы не можете иметь пиксель при дробном смещении (например, 0,3), поэтому точка, скорее всего, будет целыми числами. –

+0

Я пытался обновить свой оригинальный пост. Теперь это имеет смысл? Я вижу, что я не могу иметь пиксели с дробным значением, но мне бы очень хотелось преобразовать его из широты/долготы, которая преобразуется в дробное значение. – pir

+1

[Прочтите источник листовка] (https://github.com/Leaflet/Leaflet/blob/024e01ec3ade1cd08f5163ea58c90db04129a3d0/src/map/Map.js#L389-L392) и напишите одно и то же, за исключением без вызова 'round () ' – tmcw

ответ

1

Прочитайте источник листовки и написать то же самое, но без вызова округлить()

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