嘿所有,我正在尝试让MKMapView启动并运行,但我似乎无法通过似乎是一个参考错误.我花了几个小时在谷歌上搜索这个以及昨晚.
标题:
#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
@interface MapsViewController : UIViewController {
MKMapView *mapView;
}
@end
Run Code Online (Sandbox Code Playgroud)
主要:
#import "MapsViewController.h"
@implementation MapsViewController
- (void)viewDidLoad {
[super viewDidLoad];
mapView = [[MKMapView alloc] initWithFrame:self.view.frame];
[self.view insertSubview:mapView atIndex:0];
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- …Run Code Online (Sandbox Code Playgroud) 有人知道如何将可访问性标签添加到地图注释中吗?我已经尝试将它添加到MKAnnotationView和MKAnnotation但是都不起作用.选择注释时,VoiceOver始终只读取"pin",而原始地图应用程序在选择注释时会显示正确的标题.
谢谢和最好的问候,
克里斯
我试图使用MKMapView,我想显示/更改谷歌提供的地图类型.我们都知道,在网站上我们可以使用普通道路类型,混合类型,卫星/照片类型,最近也可以使用浮雕类型.
这是我想要使用的最后一个.将它插入UIWebView + HTML +标准google API中没有问题,但由于种种原因,我现在更喜欢将它与MKMapView一起使用.但是......惊喜:
"似乎"我们不能使用tat类型的地图......
阅读Apple MKMapView类参考:
MKMapType
要显示的地图类型.
enum {
MKMapTypeStandard,
MKMapTypeSatellite,
MKMapTypeHybrid
};
Run Code Online (Sandbox Code Playgroud)
其中0表示MKMapTypeStandard
1是MKMapTypeSatellite
当然2是MKMapTypeHybrid ......
所以我们正式被允许使用那种3种地图,而不是浮雕类型,它似乎在苹果框架中根本不存在......
但我很好奇,所以我尝试了这个:
myMKMapView.mapType = 3; // a number not officially declared
Run Code Online (Sandbox Code Playgroud)
并且它工作得很好,苹果framweork要求谷歌正确的地图类型然后它在我的视图中显示它,在模拟器和iPhone设备.
所以,这是我的问题:
即使苹果文件中没有"正式"声明,你认为我还能使用它吗?Apple会拒绝我的应用程序以这种方式使用它的框架吗?
提前致谢,
卢卡
我正在尝试两个MKCoordinateRegion之间的联合.有没有人知道如何做到这一点?
我有一个MkMapView,我有一些注释.单击注释时,其详细信息在另一个视图中打开,该视图在地图视图的下半部分具有滚动视图.当我们滚动滚动视图时,地图以下一个注释为中心,其详细信息显示在scrollview中.
我的问题是我想在地图上添加一个点击手势,这样当我点击地图时,滚动视图应该隐藏.为此,我在地图上添加了一个UiTapGesture也可以正常工作,但问题是地图上的注释不再保持可用.地图总是进行tapgesture的动作,它再也不会再调用selectannotation方法了?
我该如何解决这个问题????
我正在使用此代码来设置一个区域MKMapView,使其居中pin并缩放以显示大约10km的区域.
CLLocationAccuracy accuracy = kCLLocationAccuracyKilometer;
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(pin.coordinate, accuracy * 10.0f, accuracy * 10.0f);
[self.mapSubView setRegion:region animated:NO];
Run Code Online (Sandbox Code Playgroud)
运行纬度-90,经度-58.359001159667969的引脚坐标的代码时,region生成如下所示:

mapSubView绘制时发生崩溃: -
因未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'无效区域<center:-90.00000000,-58.35900116 span:+0.08953039,+ 1462142065660629.00000000>'
我第一次尝试解决此问题是检查"边缘"纬度/长度(-90,+ 90,-180,+ 180),这解决了这个问题.但是,如果纬度更改为-89.99999,则问题将返回.
我猜这是由于纬度存在的组合-90和/或区域跨度的经度三角洲是如此之大,导致在实际上是"这个世界的"一区:P
任何关于如何在任何坐标处围绕销钉居中的建议,显示~10km的区域,没有这种碰撞将是非常感谢.
当我尝试符合MKAnnotation协议时,它会抛出错误,我的类不符合协议MKAnnotation.我使用以下代码
import MapKit
import Foundation
class MyAnnotation: NSObject, MKAnnotation
{
}
Run Code Online (Sandbox Code Playgroud)
Objective-C也可以做同样的事情.
我有一个包含MKMapView的UIViewController.我通过以下代码在当前位置添加了注释:
import UIKit
import MapKit
class LocationViewController: UIViewController , MKMapViewDelegate ,CLLocationManagerDelegate {
@IBOutlet weak var mapView: MKMapView!
var locationManager: CLLocationManager!
let regionRadius: CLLocationDistance = 1000
var token: dispatch_once_t = 0
override func viewDidLoad() {
super.viewDidLoad()
mapView.delegate = self
locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()
}
func centerMapOnLocation(location: CLLocation) {
let coordinateRegion = MKCoordinateRegionMakeWithDistance(location.coordinate,
regionRadius * 2.0, regionRadius * 2.0)
mapView.setRegion(coordinateRegion, animated: true)
}
func mapView(mapView: MKMapView, didUpdateUserLocation userLocation: MKUserLocation) {
if ((userLocation.coordinate.latitude != 0.0) && …Run Code Online (Sandbox Code Playgroud) 我正在使用XCode 7.2和Swift 2.1开发iOS应用程序,并且我已经在我的应用程序中成功实现了MapKit地图.地图加载完美,并以用户当前位置为中心.
现在,如果用户将地图中心移动到新位置,我想检索中心坐标.按下按钮可以"捕获"这个新位置的坐标(参见附加的gif中的"设置网格参考"按钮)并显示在标签中.
我来回答最接近的是在这里,和我实现了代码,但我仍然无法弄清楚如何通过点击我创建了IBOutlet中按钮来更新坐标标签.
我在这里想念的是什么?!
任何帮助将非常感谢 - 提前感谢!
----------------关注问题------------------
现在我们已经解决了问题并且我们得到了新的中心坐标标签,我还有一个问题 - 最有可能是一个菜鸟疏忽,但我在这里有一个陡峭的学习曲线,所以请耐心等待.. .
我们已经成功确定了中心坐标,现在它们在我们创建的函数中设置为mapLongitude和mapLatitude.
我有两个其他变量(newTargetLong和newTargetLat),它们构成了一个值数组的一部分,将传递给下一个视图控制器,我想:
let newTargetLong = mapLongitude
let newTargetLat = mapLatitude
Run Code Online (Sandbox Code Playgroud)
这样就可以用.append指令将新的纬度和经度添加到数组中.
但由于某种原因,我只是无法将这两个值"超出"该功能.我需要做些什么才能实现这一目标?
我有一个swift带有MapView 的应用程序.这些是我在地图故事板上的设置:
另外,在我正在做的代码中:
let regionRadius: CLLocationDistance = 10000
let initialLocation = CLLocation(latitude: latitude, longitude: longitude)
centerMapOnLocation(initialLocation, map: cell.mapView, radius: regionRadius)
cell.mapView.scrollEnabled = false
cell.mapView.rotateEnabled = false
Run Code Online (Sandbox Code Playgroud)
我的方法centerMapOnLocation最初将地图集中在特定位置:
func centerMapOnLocation(location: CLLocation, map: MKMapView, radius: CLLocationDistance) {
let coordinateRegion = MKCoordinateRegionMakeWithDistance(location.coordinate,
radius * 2.0, radius * 2.0)
map.setRegion(coordinateRegion, animated: true)
}
Run Code Online (Sandbox Code Playgroud)
我想只允许用户放大/缩小到精确的gps坐标.
目前用户无法滚动地图,但他可以旋转它,也可以 - 他可以在地图上的任何地方双击,它将在那里放大.
我想禁用这些选项并产生效果,当用户双击地图(或捏合)时 - 它只会缩放到初始位置.
我怎么能这样做,而且 - 为什么不起作用rotateEnabled = false?
mapkit ×10
ios ×6
mkmapview ×5
swift ×4
iphone ×3
objective-c ×3
annotations ×2
cocoa-touch ×1
geo ×1
google-maps ×1
ios4 ×1
mkannotation ×1
voiceover ×1