当我需要创buildMKCoordinateRegion ,我执行以下操作: var region = MKCoordinateRegion .FromDistance(coordinate, RegionSizeInMeters, RegionSizeInMeters); 非常简单 – 完美的作品。 现在我想存储当前区域跨度的值。 当我看着这个区域region.Span值,它是一个MKCoordinateSpan ,它有两个属性: public double LatitudeDelta; public double LongitudeDelta; 如何将LatitudeDelta值转换为latitudinalMeters ? (所以我可以使用上面的方法重新创build我的区域(稍后)…
我希望能够通过允许用户在UIAlertView中input地址或位置来更新显示在MKMapView上的区域。 我目前有: if (geocoder.geocoding) [geocoder cancelGeocode]; [geocoder geocodeAddressString:[[alertView textFieldAtIndex:0] text] completionHandler:^(NSArray *placemarks, NSError *error) { if (!error) { NSLog(@"Found a location"); } else { NSLog(@"Error in geocoding"); } NSLog(@"Num found: %d", [placemarks count]); CLPlacemark *placemark = [placemarks objectAtIndex:0]; MKCoordinateRegion region; region.center.latitude = placemark.region.center.latitude; region.center.longitude = placemark.region.center.longitude; MKCoordinateSpan span; double radius = placemark.region.radius / 1000; NSLog(@"Radius […]
我需要检查用户位置是否属于MKCoordinateRegion。 我很惊讶没有find简单的函数, 像这样:CGRectContainsCGPoint(矩形,点) 。 我发现下面的一段代码: CLLocationCoordinate2D topLeftCoordinate = CLLocationCoordinate2DMake(region.center.latitude + (region.span.latitudeDelta/2.0), region.center.longitude – (region.span.longitudeDelta/2.0)); CLLocationCoordinate2D bottomRightCoordinate = CLLocationCoordinate2DMake(region.center.latitude – (region.span.latitudeDelta/2.0), region.center.longitude + (region.span.longitudeDelta/2.0)); if (location.latitude < topLeftCoordinate.latitude || location.latitude > bottomRightCoordinate.latitude || location.longitude < bottomRightCoordinate.longitude || location.longitude > bottomRightCoordinate.longitude) { // Coordinate fits into the region } 但是,我不确定是否准确,因为文档没有明确指定区域矩形的计算方式。 必须有更简单的方法来做到这一点。 我忽略了MapKit框架文档中的一些function吗?
当我的iPhone应用程序正在closures时,我将地图区域保存为用户默认值: MKCoordinateRegion region = mapView.region; [[NSUserDefaults standardUserDefaults] setDouble:region.center.latitude forKey:@"map.location.center.latitude"]; [[NSUserDefaults standardUserDefaults] setDouble:region.center.longitude forKey:@"map.location.center.longitude"]; [[NSUserDefaults standardUserDefaults] setDouble:region.span.latitudeDelta forKey:@"map.location.span.latitude"]; [[NSUserDefaults standardUserDefaults] setDouble:region.span.longitudeDelta forKey:@"map.location.span.longitude"]; 当应用程序再次启动时,Ш以相同的方式读取这些值,以便用户可以看到与上次完全相同的地图视图: MKCoordinateRegion region; region.center.latitude = [[NSUserDefaults standardUserDefaults] doubleForKey:@"map.location.center.latitude"]; region.center.longitude = [[NSUserDefaults standardUserDefaults] doubleForKey:@"map.location.center.longitude"]; region.span.latitudeDelta = [[NSUserDefaults standardUserDefaults] doubleForKey:@"map.location.span.latitude"]; region.span.longitudeDelta = [[NSUserDefaults standardUserDefaults] doubleForKey:@"map.location.span.longitude"]; NSLog([NSString stringWithFormat:@"Region read : %f %f %f %f", region.center.latitude, region.center.longitude, region.span.latitudeDelta, […]
我在我的应用程序中有一个正方形的MKMapView,我希望以米为单位设置中心点和视图的确切高度/宽度。 创build一个MKCoordinateRegion并设置地图(如在这个代码中… MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(center_coord, 1000.0, 1000.0); [self.mapView setRegion:region animated:YES]; ..)不能正常工作,因为在这里使用区域意味着至less显示该区域,通常比区域更多。 我打算使用setVisibleMapRect:animated:方法,因为我相信这将缩放到实际传递的MKMapRect 。 那么,是否有一个简单的方法来在MKcoordinateRegion和MKMapRect之间进行转换? 也许获取该区域的左上angular和右下angular坐标,并使用它们来使MKMapRect? 我在Map工具包函数参考中看不到任何东西。 (使用iOS 5,Xcode 4.2)