如何使用mapkit确定1000英尺或1/2英里的距离?来自某个引脚的半径或两个引脚之间的距离.
例如,我将地图集中在引脚A上.引脚B,C和D也位于地图上,距离引脚A的距离不同.B和C距离A不到1/2英里,但D距离1英里.我想知道B和C距离A不到1/2英里.我怎么能算出来?
我想知道是否有人知道MKAnnotationView类的任何子类.在苹果文档中,他们说一个例子是MKPinAnnotationView,所以我想知道是否有其他预先创建的子类,如用于跟踪设备当前位置的子类.如果有人有关于创建我自己的MKAnnotationView类的子类的提示,那也很棒.
谢谢,bubster
编辑:我相信我的问题是这个代码适用于整数缩放级别,但我希望它适用于浮动缩放级别.
我有一个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) 我正在开发一个具有映射功能的应用程序,原生iOS 6地图应用程序中的3D内容对我们的CEO非常感兴趣.
我想知道在MKMapView内部是否可以使用该按钮,或者仅在内置地图应用程序中可用?
我有一个问题,当有多个叠加添加到地图时,自定义MKOverlayView和标准MKPolygonView被剪裁在某些缩放级别.
一些观察:
就代码而言:这会将叠加层添加到NSMutableArray(borderOverlays),然后在其他位置访问以加载特定国家/地区ID的叠加层.minX/minY/maxX/maxY是纬度/经度值; polygon是从ESRI shapefile构造的路径.
CLLocationCoordinate2D mbrMin = CLLocationCoordinate2DMake(minY, minX);
CLLocationCoordinate2D mbrMax = CLLocationCoordinate2DMake(maxY, maxX);
MKMapPoint minPoint = MKMapPointForCoordinate(mbrMin);
MKMapPoint maxPoint = MKMapPointForCoordinate(mbrMax);
MKMapSize size = MKMapSizeMake(maxPoint.x - minPoint.x, maxPoint.y - minPoint.y);
MKMapRect rect = MKMapRectMake(minPoint.x, minPoint.y, size.width, size.height);
if ( spans180 ) {
rect = MKMapRectMake(minPoint.x, minPoint.y, MKMapSizeWorld.width * 2, size.height);
}
CustomMKOverlay* overlay = [[CustomMKOverlay alloc] initWithPolygon:polygon withBoundingMapRect:rect];
[borderOverlays addObject:overlay];
Run Code Online (Sandbox Code Playgroud)
叠加层通过以下方式添加到地图中:
[mapView addOverlay:overlay];
Run Code Online (Sandbox Code Playgroud)
viewForOverlay:
- (MKOverlayView *)mapView:(MKMapView*)aMapView viewForOverlay:(id<MKOverlay>)overlay
{
if ( …Run Code Online (Sandbox Code Playgroud) 如何以编程方式获取iOS上已安装的"路由应用"列表?
这背后的原因是,iOS提供了大量的导航应用程序,我不想维护手动列表.
Apple提供了一项自iOS 6以来的新功能,可将您的应用注册为路由应用,如此处所述http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/LocationAwarenessPG/ProvidingDirections/ProvidingDirections.html#// apple_ref/DOC/UID/TP40009497-CH8-SW7
如果您随后在常规地图应用程序中启动路由,则会显示一个能够路由您的应用程序列表,如您在此处所示:

我找不到获取清单的方法.当然,我可以通过使用canOpenURL来查询是否安装了一个特定的应用程序:在UIApplication中,但这将非常繁琐.
我知道这一定是可能的,因为着名的"何去何从?" app提供了这样的功能.
任何提示赞赏!
我为我添加了一个MKCircle叠加层mapview,我想知道一个点(点击屏幕)是否在圆圈内.这是我的代码:
- (BOOL)pointInsideOverlay:(CLLocationCoordinate2D )tapPoint overlay:(id<MKOverlay>)overlay {
BOOL isInside = FALSE;
MKPolygonView *polygonView = (MKPolygonView *)[self.mapView viewForOverlay:overlay];
MKMapPoint mapPoint = MKMapPointForCoordinate(tapPoint);
CGPoint polygonViewPoint = [polygonView pointForMapPoint:mapPoint];
BOOL mapCoordinateIsInPolygon = CGPathContainsPoint(polygonView.path, NULL, polygonViewPoint, NO);
if (mapCoordinateIsInPolygon) {
isInside = TRUE;
}
return isInside;
}
Run Code Online (Sandbox Code Playgroud)
viewForOverlay,pointForMapPoint&path已弃用.这是问题吗?
谢谢.
使用MKMapRectMake创建MKMapRect会导致编译错误,如下所示:
这是我的代码:
var lat = 37.33072
var lon = -122.029674
var loc = CLLocationCoordinate2D(latitude: lat, longitude: lon)
var point = MKMapPointForCoordinate(loc)
var flyTo = MKMapRectMake(point.x, point.y, 0, 0);
Run Code Online (Sandbox Code Playgroud)
这是编译器的错误:
Undefined symbols for architecture i386:
"_MKMapPointMake", referenced from:
_MKMapRectMake in ViewController.o
"_MKMapSizeMake", referenced from:
_MKMapRectMake in ViewController.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)
我的解决方法是使用origin和size参数创建MKMapRect.请注意,我已将MKMapKit添加到Build Phases中的链接库中
有没有人遇到同样的问题以及你如何解决这个问题?
出于某种原因,我的市场不会放大到当地.事实上,无论我改变什么,它都不会改变变焦.我是在代码的错误部分加载它,还是我错过了其他的东西?任何帮助表示赞赏.
我的代码是:
@IBOutlet var here: MKMapView!
var locationManager: CLLocationManager?
var selectedItem: String?
func locationManager
(manager: CLLocationManager!,didUpdateToLocation newLocation: CLLocation!,
fromLocation oldLocation: CLLocation!){
manager.desiredAccuracy = kCLLocationAccuracyBest
var region = self.here.region as MKCoordinateRegion
self.here.setRegion(region, animated: true)
region.span.longitudeDelta = 0.0144927536
region.span.latitudeDelta = 0.0144927536
}
Run Code Online (Sandbox Code Playgroud) 当我使用相同的字符串在MKLocalSearch和Apple Maps中搜索时,我会得到不同的结果,通常在Apple Maps中我会得到很多不同的位置,但在MKLocalSearch中我只得到一个.
Apple地图:
我的应用程序使用MKLocalSearch:
在这两种情况下,我都在寻找柏林和MKLocalSearchRequest,我设置了柏林地区的.region属性
Apple使用哪些服务进行位置搜索?