将平铺坐标转换为像素到地理坐标
Posted
技术标签:
【中文标题】将平铺坐标转换为像素到地理坐标【英文标题】:Converting tile coordinates to pixels to geographic coordinates 【发布时间】:2012-01-03 02:51:07 【问题描述】:网络上有很多类似的问题,但没有一个涉及 ios。
如果您在缩放级别 2 (4^N) 和 2我对美国感兴趣的瓷砖具有(0,1)和(1,1)的瓷砖坐标,两者都是标准的256X256 png。这 2 个图块代表降水图像。
为了适当地覆盖我的降水数据,我需要纬度和经度坐标。
This is a great link 这教会了我很多东西,但我仍然迷失在坐标部分。为了获得地图图块 ex (1,1) 的像素表示,我是否将 x 和 y 都乘以 256?
我觉得我可以做到这一点,如果我能计算出瓷砖地图坐标到像素到纬度/经度值。
也许有人可以把我引向正确的方向。
【问题讨论】:
【参考方案1】:除非我有误解,否则我必须质疑您为什么要手动进行此计算。 MKMapView
有四种方法可以将像素转换为坐标并返回。前两个与积分有关:
- (CGPoint)convertCoordinate:(CLLocationCoordinate2D)coordinate toPointToView:(UIView *)view
- (CLLocationCoordinate2D)convertPoint:(CGPoint)point toCoordinateFromView:(UIView *)view
此外,您可以来回转换矩形:
- (CGRect)convertRegion:(MKCoordinateRegion)region toRectToView:(UIView *)view
- (CGRect)convertRegion:(MKCoordinateRegion)region toRectToView:(UIView *)view
这些都可以在MKMapView
参考文献here 中找到。
【讨论】:
谢谢!这就说得通了。所以本质上,坐标为 (1,1) 的地图图块实际上只是一个 CGPoint,我可以在其中使用第二种方法将其转换为 2d 坐标? @user1042402:是的,应该可以。因此,如果您从任何视图中获取 CGPoint,您可以将它和视图传递给地图视图。然后你会得到一个 CLLocationCoordinate2D,它是一个有两个值的结构,纬度和经度。然后,您可以使用这些值来获取地图数据。当然你也可以使用第一种方法从 Lat/Lng 值中获取 CGPoints。【参考方案2】:好吧,我可能已经回答了我的一个问题,尽管我没有得到我想的结果。通过使用
CGPoint touchPoint = [gestureRecognizer locationInView:self.mapView];
NSLog(@"Touch point is %f %f", touchPoint.x, touchPoint.y);
我能够触摸地图周围的点并在日志语句中获取 CGPoints。文档指出,根据this,点 (0,0) 将始终位于西北角
我得到的实际值是 (1.00000, 2.00000)(在西北角)。但同样,文档说在缩放级别 0 时,地图将由一个大图块组成,然后相对于缩放级别呈指数增长。我觉得我离解决方案越来越近了。
【讨论】:
以上是关于将平铺坐标转换为像素到地理坐标的主要内容,如果未能解决你的问题,请参考以下文章