首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >地理坐标屏幕坐标算法

地理坐标屏幕坐标算法
EN

Stack Overflow用户
提问于 2013-09-05 18:50:54
回答 1查看 812关注 0票数 1

我正在开发一个跨平台的移动应用程序,它将地理坐标的位置存储到db中,每个点代表图形对象的左上角。

这个应用程序包含一个地图控件(来自telerik的radmap),它支持地理坐标,因此,您只需添加矩形,它就可以正确地绘制它。

由于许可问题,我不能在安卓版本中使用地图控件(谷歌不允许我们在商业应用程序中使用地图控件-- commercial,对于ios,我仍然没有检查这一点),所以我将使用一个图像作为背景。

我有“地图/图像”的左上角和右下角的地理坐标,我必须绘制由角定义的区域内的图形对象。

有人能帮我找到如何将地理坐标转换为屏幕坐标吗?

数据示例(X,Y):

代码语言:javascript
复制
        GEO   

左上角:

-0,00939846 -0,00504255

右下角:

0,009398461 -0,01281023

要画的点:

-0.00464558,-0.00799298

-0.0046509,-0.00845432

-0.00386774,-0.00860988

-0.00344932,-0.00860452

代码语言:javascript
复制
        SCREEN

左上角:

0%0

右下角:

点画

屏幕尺寸

1024 * 768

谢谢你的帮助,

路易斯·皮尼奥

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-06 17:21:36

我在iOS方面最流利,所以这就是我的答案。我试图尽可能多地创建变量,这样您就可以手动/以编程方式重写它们,而不会过多地更改其他代码。

代码语言:javascript
复制
- (CGPoint)convertGeoPoint:(CGPoint)point toView:(UIView*)view {
    CGPoint geoTopLeft = CGPointMake(-0.00939846, -0.00504255);
    CGPoint geoBottomRight = CGPointMake(0.009398461, -0.01281023);
    CGFloat geoWidth = geoBottomRight.x - geoTopLeft.x;
    CGFloat geoHeight = geoBottomRight.y - geoTopLeft.y;

    // This is the block you would change to suit your needs
    CGPoint viewTopLeft = CGPointMake(view.frame.origin.x, view.frame.origin.y);
    CGFloat viewWidth = view.frame.size.width;
    CGFloat viewHeight = view.frame.size.height;

    return CGPointMake(viewTopLeft.x + (point.x-geoTopLeft.x)*viewWidth/geoWidth, viewTopLeft.y + (point.y-geoTopLeft.y)*viewHeight/geoHeight);
}

基本思想是,您需要将点转换为新的坐标系。要做到这一点,您需要除以适当的地理维度,并乘以适当的视图维度。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18643803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档