太阳标记位置在任何缩放级别渲染在主视图之外

Sun marker position render outside main view at any zoom level

由于 Leaflet.Realtime,我有一个 30 分钟更新的 Sun 制造商,但这里的 Sun 渲染在主视图之外,(您必须向右滚动才能看到 Sun)。

我确实尝试了 worldCopyJump: true, 和类似的东西:

var lat = data.solar_lat;
var lng = (data.solar_lon - 360);

但我被困在这个愚蠢的事情上,下面是传单游乐场的完整示例:

https://playground-leaflet.rhcloud.com/haco/edit?html,js,output

让太阳照耀地球有什么帮助"main view" ?

我想这完全取决于你怎么称呼"main view"。

您使用的 data source 正确报告了太阳在地球上的垂直投影作为坐标在 [-90; 90]度纬度和[-180; 180] 度经度,正如大多数标准所期望的那样。

目前在:

"solar_lat":-22.41390593196, "solar_lon":106.2319043175

(即西澳大利亚某处)

这个 "main view" 以 [0, 0] 位置为中心(西/中非某处),特别是格林威治子午线周围(靠近伦敦的某处),即欧洲位于中心"main" 地图。

更新后的游乐场仅显示 "main" 视图:https://playground-leaflet.rhcloud.com/hefu/1/edit?html,js,output

如果您在美国长大,您可能更熟悉美洲显示在地图的中心,澳大利亚在其左侧,欧洲在右侧。

来源:http://www.freeworldmaps.net/world/america-centric/

如果您想匹配该视图(美洲在中心),例如,只要原始数据比格林威治子午线更东,您就可以简单地换行经度。

function wrapAroundAmericas(latlng) {
  var lng = latlng.lng;

  return L.latLng(
    latlng.lat,
    lng > 0 ? lng - 360 : lng
  );
}

演示:https://playground-leaflet.rhcloud.com/faru/1/edit?html,js,output