Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.12.2009, 12:03
Аватар для movnet
movnet movnet вне форума
Начинающий
 
Регистрация: 24.07.2008
Сообщения: 127
Версия Delphi: Delphi 7
Репутация: 23
По умолчанию Помогите перевести код С# на Delphi

Помогите перевести код С# на Delphi!

class gmaps {
...
public Point tile(double lat, double lng, int zoom)
{
return new System.Drawing.Point(Xpixel(lng, zoom) / 256, Ypixel(lat, zoom));
}

public int Xpixel(double lng, int zoom)
{
// Instead of -180 to +180, we want 0 to 360
double dlng = this.lng.Value + 180.0;

// 256 = tile Width
double dxpixel = dlng / 360.0 * 256 * Math.Pow(2, 17 - zoom);
int xpixel = Convert.ToInt32(Math.Floor(dxpixel));
return xpixel;
}

public int Ypixel(double lat, int zoom)
{
// The 25 comes from 17 + (256=>2^8=>8) 17+8 = 25
// ypixelcenter = the middle y pixel (the equator) at this zoom level
double ypixelcenter = Math.Pow(2, 25 - zoom - 1);

// PI/360 == degrees -> radians
// The trig functions are done with radians
double dypixel = ypixelcenter - Math.Log(Math.Tan(lat * Math.PI / 360 + Math.PI / 4)) * ypixelcenter / Math.PI;
int ypixel = Convert.ToInt32(Math.Floor(dypixel));
return ypixel;
}
...
}
Ответить с цитированием
  #2  
Старый 09.12.2009, 17:10
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Как-то так:
Код:
unit Unit2;

interface

uses
  SysUtils, Windows, Classes, Math;

type
  gmaps = class
  public
    function tile(lat, lng : Double; zoom : Integer) : TPoint;
    function Xpixel(lng : Double; zoom : Integer) : Integer;
    function Ypixel(lat : Double; zoom : Integer) : Integer;
  end;
implementation

{ gmaps }

function gmaps.tile(lat, lng: Double; zoom: Integer): TPoint;
begin
  Result.X := Round(Xpixel(lng, zoom) / 256);
  Result.Y := Round(Ypixel(lat, zoom));
end;

function gmaps.Xpixel(lng: Double; zoom: Integer): Integer;
var
  dlng : Double;
  dxpixel : Double;
begin
  dlng := lng + 180; // this.lng.Value + 180.0; <- не понятно, что за this.lng.Value

  dxpixel := dlng / 360.0 * 256 * Power(2, 17 - zoom);
  Result := Round(dxpixel);
end;

function gmaps.Ypixel(lat: Double; zoom: Integer): Integer;
var
  ypixelcenter : Double;
  dypixel : Double;
begin
  ypixelcenter := Power(2, 25 - zoom - 1);

  dypixel := ypixelcenter - Ln(Tan(lat * PI / 360 + PI / 4)) * ypixelcenter / PI;
  Result := Round(dypixel);
end;

end.
Ответить с цитированием
  #3  
Старый 15.12.2009, 15:07
Аватар для movnet
movnet movnet вне форума
Начинающий
 
Регистрация: 24.07.2008
Сообщения: 127
Версия Delphi: Delphi 7
Репутация: 23
По умолчанию

Спасибо за помощь!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:18.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025