我正在玩新的Apple Indoor Maps Program 中的IMDF。但是,我正在试验建筑物(墙壁等)的 3D 效果。使用官方地图应用程序,我们可以通过在 89° 和 45° 之间的角度平移相机来轻松实现此效果,如下所示:
现在我试图通过使间距手势来实现这一self.mapView.isPitchEnabled = true到从苹果示例应用程式IMDF但结果是只有一个平坦表面。
现在我尝试启用建筑物self.mapView.showsBuildings = true,因为我认为启用建筑物可以触发某些功能将 IMDF-Data 渲染为 3D,但结果令人失望。
正如我们所看到的,IMDF-Data 仅将某种叠加层渲染到地图上。看IMDF的文档,机场室内地图也是用IMDF做的,那么诀窍在哪里呢?甚至有可能以私人开发者的身份获得 3D 效果吗?
2020 年 6 月 29 日更新:
2020 年 6 月 8 日尝试向苹果开发人员询问苹果提供的 IMDF 问题的特定电子邮件。imdfquestions@apple.com。至今没有答案。在苹果开发者论坛上问了同样的问题。也没有答案。
我正在使用地图套件并使用"showsUserLocation"显示用户的位置我使用以下代码缩放到用户的位置,但不缩放.它缩放到非洲的某个位置,尽管地图上的用户位置显示正确.
MKCoordinateRegion newRegion;
MKUserLocation* usrLocation = mapView.userLocation;
newRegion.center.latitude = usrLocation.location.coordinate.latitude;
newRegion.center.longitude = usrLocation.location.coordinate.longitude;
newRegion.span.latitudeDelta = 20.0;
newRegion.span.longitudeDelta = 28.0;
[self.mapView setRegion:newRegion animated:YES];
Run Code Online (Sandbox Code Playgroud)
为什么用户的位置正确显示而不是正确缩放.有人可以纠正我吗?
我有一个有很多注释的mapview,其中大多数都非常接近.我想要做的是类似于iOS上的Photo应用程序,当它们彼此太靠近时,注释被分组,每当你缩小时,如果注释距离太远,它们就会被分组.
我已经看过这个问题,但给出的答案并不是我真正想要的.
我正在寻找可以自己实现的库或算法.
我实际上是在计算x和y坐标中最大和最小点之间的距离MKMapPoints.
为此,我这样做(y轴的最大距离):
MKMapPoint test1, test2;
double dist;
test1.x = 0.0;
test1.y = 0.0;
test2.x = 0.0;
test2.y = MKMapSizeWorld.height;
dist = MKMetersBetweenMapPoints(test2, test1);
NSLog(@"Distance %f",dist);
Run Code Online (Sandbox Code Playgroud)
我在控制台中得到18997878.291251.但是当我将距离计算更改为:
dist = MKMetersBetweenMapPoints(test1, test2);
Run Code Online (Sandbox Code Playgroud)
我得到18873651.664238,所以我不明白有什么区别.我甚至不知道我是否做正确的事情来获得x和y轴的最大距离值.
任何帮助将不胜感激.
(使用iOS 5和Xcode 4.2.)
我按照这里的说明操作:http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/LocationAwarenessPG/AnnotatingMaps/AnnotatingMaps.html#//apple_ref/doc/uid/TP40009497-CH6-SW15并使用MKCircle和MKCircleView类在我的MKMapView上添加圆形覆盖.
然而我真正想要的是倒圆形叠加,就像下面草图中的左侧地图(目前我有一个像右边那样的圆形叠加):

对于倒圆,叠加应覆盖整个地图 - 除了可见圆.
有没有一种简单的方法可以使用MKCircle/MKCircleView类来实现这一目的?或者我是否需要更深入地定义自定义叠加对象/视图?
谢谢您的帮助 :)
快问你的问题.我有一个我正在研究的应用程序需要使用地图,但不会有网络连接.我见过其他人就此问过类似的问题,但我的要求略有不同,所以我想发一个新问题.
以下是我对该应用的要求.
那么,是否存在任何人都可以建议的缓存地图图块的框架或方法?
谢谢你提前出去.
我用几行代码和两个组件创建了一个测试项目:MKMapView和UIButton.我勾选了mapView选项 - Shows user location.我还为按钮定义了一个动作,它将地图缩放到用户位置.
这是来自控制器的代码:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
self.mapView.userTrackingMode = MKUserTrackingModeFollowWithHeading;
self.mapView.delegate = self;
}
- (IBAction)changeRegion:(id)sender {
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(self.mapView.userLocation.coordinate, 200.0f, 200.0f);
[self.mapView setRegion:region animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
非常简单明了,不是吗?但是当我点击按钮时,我看到了奇怪的行为:地图视图缩放到指定区域然后返回到原始缩放.有什么问题?如何同时保持缩放和跟踪用户位置?
我注意到MKUserTrackingModeFollow跟踪模式的类似行为.
PS我忘了提到它主要是iOS7的问题
我在使用MKMapView和MKMapCamera时注意到了奇怪的行为.我需要实现一些Apple Maps应用程序的标准行为.基本上,我需要的是当Map View的用户跟踪模式设置为MKUserTrackingModeFollowWithHeading时能够在2D和3D模式之间切换.
目前,我的解决方案在userTrackingMode设置为MKUserTrackingModeNone时工作正常,但它在其他模式下执行奇怪的动画(无论我使用setCamera:动画:是或否)都会发生这种情况.当我在设置new之前和之后记录相机参数时,唯一的区别是我的音高变化.
另一个问题是改变摄像机的高度以编程方式放大或缩小.我试图在IBAction方法中使用捏合或缩小手势来模仿缩放.在followWithHeadingMode中,地图始终返回"默认"缩放级别(摄像机的高度),而在其他模式下效果很好.
我启动了示例项目来检查发生了什么,这是我的单视图应用程序的视图控制器,带有地图视图,其中出现问题:
#import "CCViewController.h"
@interface CCViewController ()
@end
@implementation CCViewController
- (void)viewDidLoad{
[super viewDidLoad];
}
- (void)setUpMap{
[self.mapView setShowsUserLocation: YES];
}
- (void)viewDidAppear:(BOOL)animated{
[self setUpMap];
}
- (IBAction)mapModeSwitchClicked:(id)sender {
MKMapCamera *newCamera = [MKMapCamera camera];
newCamera.centerCoordinate = self.mapView.camera.centerCoordinate;
newCamera.heading = self.mapView.camera.heading;
newCamera.altitude = self.mapView.camera.altitude;
if(!self.mapView.camera.pitch){
newCamera.pitch = 50;
self.mapModeSwitch.title = @"2D";
}
else{
newCamera.pitch = 0;
self.mapModeSwitch.title = @"3D";
}
[self.mapView setCamera:newCamera animated:YES];
}
- (IBAction)locateMeButtonClicked:(id)sender {
if(self.mapView.userTrackingMode != MKUserTrackingModeFollowWithHeading)
[self.mapView …Run Code Online (Sandbox Code Playgroud) 我正在尝试构建一个API,以便了解是否CLLocation代表土地.我需要这个离线工作,因为我希望我的大多数用户都没有连接.我使用MapBox作为tile服务器,但这仍然是一个MapKit问题,因为我没有使用MapBox SDK.
我已经尝试了几种方法来确定给定坐标是代表陆地还是海洋位置:
另外(在上面的处理之后)是否有一种有效的方法来决定给定一个瓦片坐标(x,y,z)是否是陆地/海洋/海岸瓦片?
如果有人一直在努力解决这个问题,我会在此提出一些建议.
当我尝试放置一个引脚时,我在使用自定义注释加载到地图视图中时遇到了一些麻烦.
import UIKit
import MapKit
import CoreLocation
class MapViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate{
@IBAction func ReportBtn(sender: AnyObject) {
//MARK: Report Date And Time Details
let ReportTime = NSDate()
let TimeStamp = NSDateFormatter()
TimeStamp.timeStyle = NSDateFormatterStyle.ShortStyle
TimeStamp.dateStyle = NSDateFormatterStyle.ShortStyle
TimeStamp.stringFromDate(ReportTime)
//MARK: Default Point Annotation Begins
let ReportAnnotation = MKPointAnnotation()
ReportAnnotation.title = "Annotation Created"
ReportAnnotation.subtitle = ReportTime.description
ReportAnnotation.coordinate = locationManager.location!.coordinate
mapView(MainMap, viewForAnnotation: ReportAnnotation)
MainMap.addAnnotation(ReportAnnotation)
}
@IBOutlet weak var MainMap: MKMapView!
let locationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
self.locationManager.requestWhenInUseAuthorization()
self.locationManager.delegate = self …Run Code Online (Sandbox Code Playgroud) mapkit ×10
ios ×9
iphone ×3
swift ×2
cocoa-touch ×1
geo ×1
geolocation ×1
google-maps ×1
imdf ×1
ios5 ×1
ipad ×1
mapbox ×1
mkannotation ×1
mkmapview ×1
mkoverlay ×1
objective-c ×1
offline ×1
zoom ×1