Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.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
Iphone MKMapView:获取相对缩放比例?_Iphone_Google Maps_Mkmapview - Fatal编程技术网

Iphone MKMapView:获取相对缩放比例?

Iphone MKMapView:获取相对缩放比例?,iphone,google-maps,mkmapview,Iphone,Google Maps,Mkmapview,我需要得到某种比例因子,它告诉我地图缩放了多少(每当区域改变时) 我的第一个想法是使用span的delta纬度或经度值。我会跟踪“旧”值,然后在地图区域更改时更新该值,并将比率与旧值进行比较 我正在使用以下委托方法: - (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated { // Get the new value CLLocationDegrees newdlat = mapVie

我需要得到某种比例因子,它告诉我地图缩放了多少(每当区域改变时)

我的第一个想法是使用span的delta纬度或经度值。我会跟踪“旧”值,然后在地图区域更改时更新该值,并将比率与旧值进行比较

我正在使用以下委托方法:

- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated {
    // Get the new value
    CLLocationDegrees newdlat = mapView.region.span.latitudeDelta;

    // Find the zoom ratio (use longitude instead?)
    CGFloat zoomRatio = newdlat / olddlat;

    // Update the old value (defined elsewhere)
    olddlat = newdlat;
}
在这种情况下,我没有使用经度增量,因为我认为它将与纬度成比例,从而产生相同的比率(这是错误的吗?)

问题是,当我在滚动地图(不缩放)时检查经度和纬度增量的值时,这些值会保持轻微变化。如果地图没有缩放,跨度值不应该保持不变吗?也许我误解了什么

由于这种微小的变化,我担心我的缩放比例不够精确,无法依赖(最终我将使用它来缩放地图上的注释图像)

我的主要问题是,这是一个好方法,还是有一个更简单的方法,我忽略了


感谢您的帮助。

在面包屑示例代码中,使用以下方法计算MKZoomScale

MKZoomScale currentZoomScale = mapView.bounds.size.width / mapView.visibleMapRect.size.width;

在计算比率时,通过使用经度而不是纬度来解决问题。关于为什么会出现这种情况,请参阅我在原始帖子中的两条评论。

地球是一个球体。地图是一架飞机

要在平面上绘制地球地图,需要进行一些变形

在墨卡托投影中,经线没有扭曲,但纬度线似乎是弯曲的


因此,经度增量将包含一个常量值,而纬度增量则不包含该常量值。因此,这种情况下的“刻度”(度/mm)取决于测量杆的方向

我已经取得了一些进展。现在,当地图缩放时,我的图像可以正确缩放。我所做的最大改变是我现在使用longitudeDelta而不是latitudeDelta来检查地图是否缩放。由于某些原因,在平移贴图(不缩放)时,latitudeDelta有一些抖动。LongitudeDelta似乎没有这个问题,真的不知道为什么。更新:我在苹果论坛上发布了一个关于跨度抖动的问题,结果表明,由于地图投影mapkit使用(Mercator),预计会出现纬度抖动。因此,当你接近两极时,纬度会发生轻微变化。另一方面,我通过反复试验发现,LongitudeDelta运行良好(如不改变)。