2016-07-22 42 views
0

目标是使用坐标数组来绘制路线而不使用Google地图。将标准纬度/经度坐标转换为HTML5画布坐标的最佳方法是什么?如何在不使用Google地图的情况下将经度/纬度转换为HTML5坐标?

+0

你看看Haversine公式编辑?它会给你距离和角度,你可以很容易地转换为x,y。 –

+0

我发布了一个很好的答案。 –

+1

请注意发生在日期线(即第180子午线)的奇怪现象。幸运的是,没有太多的道路穿过它,目前只有斐济。但是,根据您要处理的区域的大小,您可能需要对短距离使用反转坐标的特殊情况进行编码。 –

回答

2

我发现了一个相当简单的方法来将纬度/经度转换为点。

  1. 获取您设置的最小/最大坐标。
  2. 让您的画布尺寸得心应手。
  3. 使用浮点计算来获取画布上x和y的百分比。
  4. 提供点数给D3。

见JS小提琴: https://jsfiddle.net/12stct3y/

var bounds = { 
    "minLon": -81.267555236816, 
    "maxLon": -81.261039733887, 
    "maxLat": 28.979709625244, 
    "minLat": 28.977783203125 
} 
var dimensions = { 
    width:400, 
    height:150 
} 
function getX(x) { 
    var position = (x - bounds.minLon)/(bounds.maxLon - bounds.minLon); 
    return dimensions.width*position; 
} 
function getY(y) { 
    var position = (y - bounds.minLat)/(bounds.maxLat - bounds.minLat); 
    return dimensions.height*position; 
} 

不包括在小提琴:

  1. 旋转基于北视
  2. 创建尺寸基于可变范围
相关问题