Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将十进制纬度/经度坐标转换为iPad屏幕坐标_Ios_Objective C_Latitude Longitude_Cartesian Coordinates - Fatal编程技术网

Ios 将十进制纬度/经度坐标转换为iPad屏幕坐标

Ios 将十进制纬度/经度坐标转换为iPad屏幕坐标,ios,objective-c,latitude-longitude,cartesian-coordinates,Ios,Objective C,Latitude Longitude,Cartesian Coordinates,我有一个纬度/经度十进制坐标,我想将其转换为适合iPad坐标系区域的点 我的代码获取纬度/经度坐标并将其转换为笛卡尔坐标(基于以下问题:),转换结果为(2494.269287575.376465) 这是我的代码(没有编译或运行时错误): 如何将十进制坐标转换为iPad屏幕上显示的坐标?您的convertLatLongCoord:方法不会尝试调整结果点到屏幕的坐标。如前所述,您可以获得-EARTH\u RADIUS到+EARTH\u RADIUS范围内的x和y值。这些需要缩放以适应屏幕 类似于以下

我有一个纬度/经度十进制坐标,我想将其转换为适合iPad坐标系区域的点

我的代码获取纬度/经度坐标并将其转换为笛卡尔坐标(基于以下问题:),转换结果为(2494.269287575.376465)

这是我的代码(没有编译或运行时错误):


如何将十进制坐标转换为iPad屏幕上显示的坐标?

您的
convertLatLongCoord:
方法不会尝试调整结果点到屏幕的坐标。如前所述,您可以获得
-EARTH\u RADIUS
+EARTH\u RADIUS
范围内的
x
y
值。这些需要缩放以适应屏幕

类似于以下内容的内容应该会有所帮助:

- (CGPoint)convertLatLongCoord:(CGPoint)latLong {
    CGFloat x = EARTH_RADIUS * cos(latLong.x) * cos(latLong.y) * SCALE + OFFSET;
    CGFloat y = EARTH_RADIUS * cos(latLong.x) * sin(latLong.y) * SCALE + OFFSET;

    return CGPointMake(x, y);
}
比例
偏移
应为如下确定的值:

CGSize screenSize = [UIScreen mainScreen].applicationFrame.size;
CGFloat SCALE = MIN(screenSize.width, screenSize.height) / (2.0 * EARTH_RADIUS);
CGFloat OFFSET = MIN(screenSize.width, screenSize.height) / 2.0;

这假设您希望地图填充最小的屏幕尺寸。

而不是
地球半径
,乘以屏幕宽度和高度。@H2CO3-这是什么意思?视网膜iPad的分辨率为2048 X 1536。我把它们相乘,得到的坐标比以前大了很多。不,是1024*768点。石英不适用于像素,它适用于点。这仍然会产生大量不同的数字。
CGSize screenSize = [UIScreen mainScreen].applicationFrame.size;
CGFloat SCALE = MIN(screenSize.width, screenSize.height) / (2.0 * EARTH_RADIUS);
CGFloat OFFSET = MIN(screenSize.width, screenSize.height) / 2.0;