У меня есть десятичные координаты широты/долготы, которые я бы хотел преобразовать в точки, которые будут вписываться в область системы координат iPad.Преобразование десятичных координат широты/долготы в координаты экрана iPad
Мой код принимает координаты широты/долготы и преобразует их в декартовые координаты (на основании этого вопроса: convert to cartesian coordinates). Результаты преобразования (2494.269287, 575.376465).
Вот мой код (не компиляции или во время выполнения ошибок):
#define EARTH_RADIUS 6371
- (void)drawRect:(CGRect)rect
{
CGPoint latLong = {41.998035, -116.012215};
CGPoint newCoord = [self convertLatLongCoord:latLong];
NSLog(@"Cartesian Coordinate: (%f, %f)",newCoord.x, newCoord.y);
//Draw dot at coordinate
CGColorRef darkColor = [[UIColor colorWithRed:21.0/255.0
green:92.0/255.0
blue:136.0/255.0
alpha:1.0] CGColor];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, darkColor);
CGContextFillRect(context, CGRectMake(newCoord.x, newCoord.y, 100, 100));
}
-(CGPoint)convertLatLongCoord:(CGPoint)latLong
{
CGFloat x = EARTH_RADIUS * cos(latLong.x) * cos(latLong.y);
CGFloat y = EARTH_RADIUS * cos(latLong.x) * sin(latLong.y);
return CGPointMake(x, y);
}
Как я могу преобразовать десятичную координату в координаты, которые будут отображаться на экране IPad?
Вместо 'EARTH_RADIUS', умножьте на ширину и высоту экрана. – 2013-04-20 19:20:31
@ H2CO3 - Что вы подразумеваете под этим? Разрешение сетчатки iPad 2048 X 1536. Я умножил их вместе, и полученные координаты были намного больше, чем раньше. – tentmaking
Nah, это 1024 * 768 ** баллов. ** Кварц не работает с пикселями, он работает с точками. – 2013-04-20 19:30:23