2016-12-05 6 views
0

У меня есть производитель Sun с 30-минутным обновлением благодаря Leaflet.Realtime, но здесь Солнце отображает внешний вид (вы должны прокрутить вправо, чтобы увидеть Солнце) ,Позиция маркера точки Солнца вне основного вида на любом уровне масштабирования

я действительно пытался worldCopyJump: true, и тому подобные вещи:

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

, но я застрял на этой глупой вещи, полный пример с листком детской площадкой ниже:

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

любую помощь, чтобы сделать Солнце светит на земле «главный вид»?

ответ

0

Я думаю, все зависит от того, что вы называете «основным видом».

data source Вы используете корректно, указав вертикальную проекцию Солнца на Землю как координаты в пределах [-90; 90] градусов и [-180; 180] градусов долготы, как ожидается в большинстве стандартов.

В настоящее время на сайте:

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

(то есть где-то у берегов Западной Австралии)

Это «основной вид» сосредоточен вокруг [0, 0] позиции (где-то у берегов Западной/Центральной Африке), в частности, вокруг гринвичский меридиан (где-то рядом с Лондоном), т. е. с Европой в центре «главной» карты.

"main map"

Обновленный площадка показывает только то, что «основной» вид: https://playground-leaflet.rhcloud.com/hefu/1/edit?html,js,output

Если вы выросли в США, вы можете быть более знакомы с Северной и Южной Америке, показываемые в центре карты, с Австралия с левой стороны и Европа справа.

World map with Americas at center

Источник: 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