powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Google map формула перевода
22 сообщений из 22, страница 1 из 1
Google map формула перевода
    #39673949
venza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
x_pixel_to_lng:
Код: pascal
1.
2.
a:=zoom(Form1.TrackBar1.Position);
result := x / a * 360 - 180;


y_pixel_to_lat:
Код: pascal
1.
2.
3.
a:=zoom(Form1.TrackBar1.Position);
n := PI - 2.0*PI*y / a;
result := 180.0 / PI * arctan( 0.5 * (exp(n) - exp(-n)) );


lng_to_x_pixel:
Код: pascal
1.
result := (x+180)/(360.0/a );


lat_to_y_pixel:
Код: pascal
1.
2.
a:=zoom(Form1.TrackBar1.Position);
result := a*(1 - Ln(Tan(Y * pi/180) + 1 / Cos (Y * pi/180 )) / PI) * 0.5;





Не могу понять где ошибка, формулы вроде рабочие.
Проверял так все ок.

showmessage(floattostr(x_pixel_to_lng_google(lng_to_x_pixel_google(60))));
showmessage(floattostr(y_pixel_to_lat_google(lat_to_y_pixel_google(80))));
...
Рейтинг: 0 / 0
Google map формула перевода
    #39673952
Tactical Nuclear Penguin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что именно не так работает?
...
Рейтинг: 0 / 0
Google map формула перевода
    #39673996
venza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tactical Nuclear Penguin,

Когда выходишь за границы экрана выходит ошибка деление на 0 не возможно, и не прорисовывается нижняя часть карты.
хотя яндекс я отображаю все ок!
...
Рейтинг: 0 / 0
Google map формула перевода
    #39674000
venza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
venza,

заключаешь эти формулы в try except ошибки нет, тобишь косяк в них...
...
Рейтинг: 0 / 0
Google map формула перевода
    #39674003
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
venzavenza,

заключаешь эти формулы в try except ошибки нет, тобишь косяк в них...
молодец, чо
...
Рейтинг: 0 / 0
Google map формула перевода
    #39674006
venza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
defecator,

и?
...
Рейтинг: 0 / 0
Google map формула перевода
    #39674007
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
venzadefecator,

и?
где ты взял эти формулы ?
...
Рейтинг: 0 / 0
Google map формула перевода
    #39674009
venza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
defecator,

Пытался вывести из вики... вот и хотел спросить где косяк.
...
Рейтинг: 0 / 0
Google map формула перевода
    #39674011
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
venzadefecator,

Пытался вывести из вики... вот и хотел спросить где косяк.
тута читал ?
https://habr.com/post/239251/
...
Рейтинг: 0 / 0
Google map формула перевода
    #39674014
venza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
defecator,
Раньше видел, щас прочитал. Если ты про гугл - сфера, яндекс - эллипсоид, формулу там видел.
...
Рейтинг: 0 / 0
Google map формула перевода
    #39674016
venza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
venza,

Суть то в чем?! не уловлю...
...
Рейтинг: 0 / 0
Google map формула перевода
    #39674017
venza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Грубо говоря вот:
...
Рейтинг: 0 / 0
Google map формула перевода
    #39674018
venza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
venza,
а яндекс все норм
...
Рейтинг: 0 / 0
Google map формула перевода
    #39674019
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
venzavenza,
а яндекс все норм

В Гугле используется Web Mercator.
Для настоящего Меркатора на сфере формулы те же,
но входные координаты должны быть координатами на сфере
...
Рейтинг: 0 / 0
Google map формула перевода
    #39674021
venza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
defecatorvenzavenza,
а яндекс все норм

В Гугле используется Web Mercator.
Для настоящего Меркатора на сфере формулы те же,
но входные координаты должны быть координатами на сфере
1) Что ты подразумеваешь под входными координатами?
2) у тебя есть готовое решение(формулы)?
...
Рейтинг: 0 / 0
Google map формула перевода
    #39674023
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
venzadefecatorпропущено...


В Гугле используется Web Mercator.
Для настоящего Меркатора на сфере формулы те же,
но входные координаты должны быть координатами на сфере
1) Что ты подразумеваешь под входными координатами?
2) у тебя есть готовое решение(формулы)?

Ищи в сети SASPlanet - это опенсорсная ГИС, написана на 100% на Delphi
Там ты найдёшь все ответы
...
Рейтинг: 0 / 0
Google map формула перевода
    #39674024
venza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я так понимаю формулы вот, но как обратные вывести?
https://en.wikipedia.org/wiki/Web_Mercator
...
Рейтинг: 0 / 0
Google map формула перевода
    #39674025
venza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
defecatorvenzaпропущено...

1) Что ты подразумеваешь под входными координатами?
2) у тебя есть готовое решение(формулы)?

Ищи в сети SASPlanet - это опенсорсная ГИС, написана на 100% на Delphi
Там ты найдёшь все ответы


Миллион раз смотрел, сложно в сас...
Вот код:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
function TCoordConverterMercatorOnSphere.LonLat2MetrInternal(const ALl: TDoublePoint): TDoublePoint;
var
  VLonLat: TDoublePoint;
begin
  VLonLat := ALl;
  VLonLat.x := VLonLat.x * (Pi / 180);
  VLonLat.y := VLonLat.y * (Pi / 180);
  result.x := Datum.GetSpheroidRadiusA * VLonLat.x;
  result.y := Datum.GetSpheroidRadiusA * Ln(Tan(PI / 4 + VLonLat.y / 2));
end;

function TCoordConverterMercatorOnSphere.LonLat2RelativeInternal(const XY: TDoublePoint): TDoublePoint;
var
  z, c: Extended;
begin
  Result.x := 0.5 + XY.x / 360;
  z := sin(XY.y * Pi / 180);
  c := 1 / (2 * Pi);
  Result.y := 0.5 - 0.5 * ln((1 + z) / (1 - z)) * c;
end;

function TCoordConverterMercatorOnSphere.Metr2LonLatInternal(const AMm: TDoublePoint): TDoublePoint;
begin
  result.X := (AMm.X / Datum.GetSpheroidRadiusA) * (180 / Pi);

  Result.Y := (AMm.Y / Datum.GetSpheroidRadiusA);
  Result.Y := exp(Result.Y);
  Result.Y := ArcTan(Result.Y);
  Result.Y := (2 * (180 / Pi) * Result.Y) - 90;
end;

function TCoordConverterMercatorOnSphere.Relative2LonLatInternal(
  const XY: TDoublePoint): TDoublePoint;
begin
  Result.X := (XY.x - 0.5) * 360;
  Result.Y := -(XY.y - 0.5) * (2 * PI);
  Result.Y := (2 * arctan(exp(Result.Y)) - PI / 2) * 180 / PI;
end;

...
Рейтинг: 0 / 0
Google map формула перевода
    #39674026
venza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ясно, никто ничего дельного не подскажет.
...
Рейтинг: 0 / 0
Google map формула перевода
    #39674027
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из чего во что ты хочешь перевести?
...
Рейтинг: 0 / 0
Google map формула перевода
    #39674030
venza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rgreatИз чего во что ты хочешь перевести?
Из X и Y в LON и LAT и наоборот из LON и LAT в X и Y.
...
Рейтинг: 0 / 0
Google map формула перевода
    #39674031
venza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пробовал щас и для osm https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Tile_numbers_to_lon..2Flat.
вот что получилось, но такая же фигня:
Код: pascal
1.
2.
3.
4.
//X:=((lon+180)/360)*exp(2*ln(z))
//Y:=(1-(ln(tan(lat*pi/180)+1/cos(lat*pi/180)))/pi)*exp(2*ln(z-1))
//lon:=(x/exp(2*ln(z)))*360-180
//lat:=arctan(sin(pi-(y/exp(2*ln(z))*2*pi))*(180/pi)
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Google map формула перевода
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]