相关疑难解决方法(0)

iOS MKMapView缩放以显示所有标记

我正在使用MKMapView并在地图上绘制了几个点.我已经使用了MKCoordinateRegionMKCoordinateSpan围绕其中一个点启用缩放等 - 但这不是我想要的......

我正在尝试使用类似于Javascript zoom to bounds功能的东西.所以我的所有要点都应该对用户可见.(英国各地将有大约10个点)我想向他们展示所有这些,或者如果他们大多数都在伦敦地区,请放大到那里.

有没有办法以编程方式解决这个问题?

iphone mkmapview

22
推荐指数
4
解决办法
2万
查看次数

MKMapView setRegion"捕捉"到预定义的缩放级别?

任何人都可以确认setRegion"捕捉"到预定义的缩放级别,以及此行为是否与设计(虽然未记录)或已知错误一样?具体来说,似乎setRegion捕捉到与用户双击地图时使用的缩放级别相对应的相同缩放级别.

我正在尝试恢复以前保存的区域,但如果通过缩放缩放而不是双击缩放设置保存的区域,则此行为无法实现.

如果我在地图的当前区域调用regionThatFits,那么在mapkit方面的事情就会被打破的一个重要线索就是如此.它应该返回相同的区域(因为它显然适合地图的框架),但它返回的区域对应于下一个更高的预定义缩放级别.

setVisibleMapRect的行为类似.

任何进一步的见解或信息将不胜感激.

我找到了这些相关的帖子,但都没有包含解决方案或确切的确认,这实际上是一个mapkit错误:

MKMapView setRegion:奇怪的行为?

MKMapView显示错误保存的区域

编辑:

这是一个演示该问题的示例.所有值对我的地图视图的宽高比都有效:

MKCoordinateRegion initialRegion;
initialRegion.center.latitude = 47.700200f;
initialRegion.center.longitude = -122.367109f;
initialRegion.span.latitudeDelta = 0.065189f;
initialRegion.span.longitudeDelta = 0.067318f;
[map setRegion:initialRegion animated:NO];
NSLog(@"DEBUG initialRegion:  %f  %f  %f  %f", initialRegion.center.latitude, initialRegion.center.longitude, initialRegion.span.latitudeDelta, initialRegion.span.longitudeDelta);
NSLog(@"DEBUG map.region:  %f  %f  %f  %f", map.region.center.latitude, map.region.center.longitude, map.region.span.latitudeDelta, map.region.span.longitudeDelta);
Run Code Online (Sandbox Code Playgroud)

OUTPUT:

DEBUG initialRegion:  47.700199  -122.367111  0.065189  0.067318
DEBUG map.region:  47.700289  -122.367096  0.106287  0.109863
Run Code Online (Sandbox Code Playgroud)

请注意纬度/经度增量值的差异.地图的值几乎是我要求的两倍.较大的值对应于用户双击地图时使用的缩放级别之一.

iphone mapkit mkmapview

19
推荐指数
2
解决办法
7886
查看次数

将MapKit贴图的缩放/边界与RouteMe贴图的缩放/边界匹配

编辑:我相信我的问题是这个代码适用于整数缩放级别,但我希望它适用于浮动缩放级别.

我有一个iOS应用程序,用户可以在基于RouteMe的地图和基于MapKit的地图之间切换.

当他们切换源时,我希望能够在一个中显示完全相同的区域.但是,我无法弄清楚如何使它们匹配,因为RouteMe和MapKit使用不同的数据结构来描述地图边界.

这里有一些代码可以让它有点接近,但并不准确.此代码来自:http://troybrant.net/blog/2010/01/set-the-zoom-level-of-an-mkmapview/

我不确定这段代码是否应该修复,或者我可能忽略了一个更简单的解决方案.代码从列出的最后一个方法开始执行:

#define MERCATOR_OFFSET 268435456
#define MERCATOR_RADIUS 85445659.44705395

#pragma mark -
#pragma mark Map conversion methods

- (double)longitudeToPixelSpaceX:(double)longitude {
  return round(MERCATOR_OFFSET + MERCATOR_RADIUS * longitude * M_PI / 180.0);
}

- (double)latitudeToPixelSpaceY:(double)latitude {
  return round(MERCATOR_OFFSET - MERCATOR_RADIUS * logf((1 + sinf(latitude * M_PI / 180.0)) / (1 - sinf(latitude * M_PI / 180.0))) / 2.0);
}

- (double)pixelSpaceXToLongitude:(double)pixelX {
  return ((round(pixelX) - MERCATOR_OFFSET) / MERCATOR_RADIUS) * 180.0 / M_PI;
}

- (double)pixelSpaceYToLatitude:(double)pixelY {
  return …
Run Code Online (Sandbox Code Playgroud)

iphone mapkit ipad ios route-me

5
推荐指数
1
解决办法
1724
查看次数

标签 统计

iphone ×3

mapkit ×2

mkmapview ×2

ios ×1

ipad ×1

route-me ×1