在js中将城市点放在svg地图上

时间:2016-09-04 17:38:58

标签: javascript svg

我只是试着在svg map javascript mapLonLeft上点一个城市点。

阐释:

我有什么:

svg中的法语地图(128x128px):

French map

WGS84中的Coords喜欢:

Coords of city

我想说一下城市巴黎的观点。 我在这个网站上搜索并找到了这段代码,但没有解释,所以我不知道mapLatBottommapLatBottomDegreefunction convertGeoToPixel(latitude, longitude , mapWidth , // in pixels mapHeight , // in pixels mapLonLeft , // in degrees mapLonDelta , // in degrees (mapLonRight - mapLonLeft); mapLatBottom , // in degrees mapLatBottomDegree) // in Radians { var x = (longitude - mapLonLeft) * (mapWidth / mapLonDelta); latitude = latitude * Math.PI / 180; var worldMapWidth = ((mapWidth / mapLonDelta) * 360) / (2 * Math.PI); var mapOffsetY = (worldMapWidth / 2 * Math.log((1 + Math.sin(mapLatBottomDegree)) / (1 - Math.sin(mapLatBottomDegree)))); var y = mapHeight - ((worldMapWidth / 2 * Math.log((1 + Math.sin(latitude)) / (1 - Math.sin(latitude)))) - mapOffsetY); return { "x": x , "y": y}; } 是什么。

row_indices = [1]
row = tf.gather(tf.constant([[1, 2],[3, 4]]), row_indices)
tf.Session().run(row)  # returns [[3, 4]]

1 个答案:

答案 0 :(得分:0)

以下是每个convertGeoToPixel的参数的含义:

  • latitude - 您要在地图上绘制的点的纬度。
  • longitude - 您要在地图上绘制的点的经度。
  • mapWidth - 地图的宽度(以像素为单位)
  • mapHeight - 地图的高度(以像素为单位)
  • mapLonLeft - 地图最左侧的真实世界经度
  • mapLonDelta - 以经度为单位的地图“宽度”
  • mapLatBottom - 地图底部的纬度(真实世界)
  • mapLatBottomDegree - mapLatBottom转换为弧度

所以,看看你的地图:

france

你必须检查左手边的经度,右手边的经度和底边的纬度。

france

看起来您可以相当准确地设置这些值:

latitude = 48.8667
longitude = 2.33333
mapWidth = mapHeight = 128
mapLonLeft = -5
mapLonDelta = 14
mapLatBottom = 42
mapLatBottomDegree = mapLatBottom * pi/180

然而,这些值是粗略估计值,如果可以的话,尝试找到地图边缘的纬度/经度的确切值。

这个功能是否像承诺的那样做是另一回事......