大家好我一直在地图应用程序中工作,我需要在两个位置之间绘制路线,我也有路线坐标(使用谷歌方向api)并将其保存在一个数组中,现在我需要做的就是从点数组创建路径,稍后我将使用MKOverlayPathView的路径在地图上创建实际路线.这里我的问题是如何从坐标数组创建一个CGPathRef,或任何其他方式来做同样的操作
在此先感谢
我正在开发一个基于MKMapView的iPhone/iPad地图应用程序,它覆盖了我自己的基本底图,即使在用户离线且无法访问Google的地图图块服务器时也能提供一些有限的功能.
这个功能正在运行 - 但是我很难在每次新构建之后测试它,因为我找不到刷新/重置iOS地图图块缓存的方法.iOS缓存甚至可以在电源循环和iOS设备重启后幸存下来.我过去放大的任何地方都会使用先前测试会话中的内存中的切片进行渲染.
有没有办法强制iOS刷新其地图缓存?现在,我能想到的唯一选择是每次需要进行测试时重新刷新操作系统.
谢谢!
顺便说一句:这几乎是这个问题的重复,但在这种情况下,问题不是使用空缓存进行测试,而是释放内存.那里接受的答案集中在RAM问题上,而不是我在这里遇到的问题.
我有一个地图应用程序.当一个人从当前位置旅行到特定位置时,我想计算该人所覆盖的距离,该人的当前速度,该人的平均速度.
我有一些MKOverlays(实际上它们是MKPolygons),一旦地图出现就会加载.我想动态改变它们的颜色.我可以看到这样做的唯一方法是删除叠加层然后用新颜色添加它.在现有的叠加层上有更好的方法吗?
我是objective-c/xcode/ios的全新...所以请温柔:)
我在地图上有一个自定义注释视图,其中有一个UIButton,但UIButton按下后没有响应.我在注释视图上有两个主要的用户交互问题:
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent*)event- 也就是说,如果我返回YES,那么我不希望触摸被发送到MKMapView(可能选择其他注释,这是注释我的注释视图),我想处理在这种情况下触摸自己.我确定userInteractionEnabled已设置为YES并且我已经调查了如何MKAnnotationView通过覆盖touchesBegan等将触摸发送到自定义注释视图(我的子类)- 但似乎触摸通常被取消(我以为我设法得到touchesEnded了几次) - 所以看起来甚至很难手动实现与自定义注释视图的任何用户交互.
有没有人有任何关于允许更多用户与MKAnnotationView对象交互的见解?
我正在处理从Google Geocoding API返回的视口和边界.当对给定坐标进行反向地理编码时,服务返回具有各种粒度(国家,行政区域,地点,子地点,路线等)的若干结果.我想在给定地图上当前可见区域的结果上选择最合适的.
我已经确定了比较MKMapPoint位置视口,当前地图视口和它们的交点(使用MKMapRectIntersection函数)的面积比(²)的算法.只要位置视口不跨越180子午线,这就可以很好地工作.在那种情况下,他们的交集是0.
我已经开始调查原因并作为调试辅助工具我MKPolygon在地图上显示叠加层,以便为我提供有关正在发生的事情的视觉线索.为了避免我的代码在地理坐标之间进行转换而引入的错误MKMapRect,我使用Google结果中的原始坐标构建了多边形叠加,如下所示:
CLLocationCoordinate2D sw, ne, nw, se;
sw = location.viewportSouthWest.coordinate;
ne = location.viewportNorthEast.coordinate;
nw = CLLocationCoordinate2DMake(ne.latitude, sw.longitude);
se = CLLocationCoordinate2DMake(sw.latitude, ne.longitude);
CLLocationCoordinate2D coords[] = {nw, ne, se, sw};
MKPolygon *p = [MKPolygon polygonWithCoordinates:coords count:4];
Run Code Online (Sandbox Code Playgroud)
例如,有问题的位置,这里是为美国返回的视口,类型为country的最后结果,当在弗吉尼亚州的某处进行地理编码坐标时:
Southwest: 18.9110643, 172.4546967
Northeast: 71.3898880, -66.9453948
Run Code Online (Sandbox Code Playgroud)
注意位于视口左下角的西南坐标是如何跨越180子午线的.当在地图上显示覆盖为多边形的此位置时,它会错误地显示在USA边框的右侧(大的棕色矩形,只有左下角可见):

类似地,显示俄罗斯的位置视口显示矩形位于俄罗斯边界左侧的错误位置.
当我将位置视口转换为MKMapPoints并且MKMapRect在地图视口(上图中的白色矩形)和位置视口之间没有找到交叉点时,这在视觉上确认存在类似的问题.
我计算地图rect的方式类似于这个SO问题中的答案:
如何将由NE和SW坐标组成的特定边界拟合到可见地图视图中?
... 除非坐标跨越第180个子午线,否则工作正常.测试MKMapRect带MKMapRectSpans180thMeridian返回false,使构造方法不正确. …
这是一个程序性较小且与服务相关的问题.
在iOS6独立苹果地图发布之前,我使用了苹果原生地图API,它整合了谷歌地图服务.所以现在我在选择Apple和Google Map之间感到困惑.
去年之后地图问题Apple似乎有了很大的改进,但是值得使用Apple原生地图而不是更可靠的Gmaps(适用于任何地点)?
我需要将地图服务集成到导航服务中,因此我需要在两者之间做出决策以用于开发.
有经验的人(iOS7地图N谷歌地图SDK for iOS)欢迎使用优点.
先感谢您!!
[注意:我已经看过其他类似的链接,但它们在应用程序的最终体验n输出中并不广泛]
如何在地图上垂直移动(通过Pan Gesture)另一个视图,使得引脚保持在覆盖图上方(而不是实际的MapKit覆盖图),如何将引脚置于地图中心.
请参阅附加屏幕截图,了解第一个和最终状态.
当用户平移上/下时,我已经获得了叠加层和屏幕顶部之间空间的CGRect.然而,当用户向上平移时,我如何使用它来移动地图和图钉同时放大地图......当用户向下平移时再次缩小,到目前为止我已经躲过了.
我尝试过不同的方法,从尝试调整可见矩形到调整地图视图的框架.答案可能在于一些MKMapRect/Region技巧.


(Freepik CC BY 3.0 手形图标)
When using the new Xcode 11 beta. I'm getting the following crash while running my app that uses MapKit. Xcode 10 works fine. Also creating a new project and adding a Map with Mapkit works fine.
A simple web search doesn't yield anything.
Any clues where to look to solve this problem?
Xcode 11 beta 1:
dyld: Symbol not found: _NavigationConfig_MapLocalizeLabels
Referenced from: /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/MapKit.framework/MapKit
Expected in: /Users/Teameh/Library/Developer/Xcode/DerivedData/MyApp-dejdjcwzzweszweqllhjxqbarbsp/Build/Products/Debug-iphonesimulator/Navigation.framework/Navigation
in /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/MapKit.framework/MapKit
Run Code Online (Sandbox Code Playgroud)
Xcode 11 beta 3:
dyld: Symbol not found: _NavigationConfig_MapLocalizeLabels
Referenced from: …Run Code Online (Sandbox Code Playgroud)