我一直在与MapKit抗争,我正在开发一个在地图上显示特定位置的应用程序。我已经设法通过MKPointAnnotation代码使用坐标、标题和副标题添加了管脚。我现在要添加右侧的标注按钮,以转到一个屏幕,其中包含有关该位置的更多信息。我一直在努力,但没有成功。有人能帮忙吗?
到目前为止,我的代码是:
import UIKit
import MapKit
import CoreLocation
class ViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate {
@IBOutlet weak var map: MKMapView!
var locationManager = CLLocationManager()
class CustomPointAnnotation: MKPointAnnotation {
var imageName: String!
}
override func viewDidLoad() {
super.viewDidLoad()
// Request location
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()
self.map.showsUserLocation = true;
// Map
var latitude:CLLocationDegrees = 52.630886
var longitude:CLLocationDegrees = 1.297355
var latDelta:CLLocationDegrees = 0.05
var lonDelta:CLLocationDegrees = 0.05
var span:MKCoordinateSpan = MKCoordinateSpanMake(latDelta, lonDelta)
var location:CLLocationCoordinate2D = CLLocationCoordinate2DMake(latitude, longitude)
var region:MKCoordinateRegion = MKCoordinateRegionMake(location, span)
map.setRegion(region, animated: true)
// Castle 52.628599, 1.296355
var castle = MKPointAnnotation()
castle.coordinate.latitude = 52.628599
castle.coordinate.longitude = 1.296355
castle.title = "Norwich Castle"
castle.subtitle = "Subtitle..."
map.addAnnotation(castle)
// Cathedral 52.631869, 1.300919
var cathedral = MKPointAnnotation()
cathedral.coordinate.latitude = 52.631869
cathedral.coordinate.longitude = 1.300919
cathedral.title = "Norwich Cathedral"
cathedral.subtitle = "Subtitle..."
map.addAnnotation(cathedral)
// The Guildhall 52.629032, 1.292522
var guildhall = MKPointAnnotation()
guildhall.coordinate.latitude = 52.629032
guildhall.coordinate.longitude = 1.292522
guildhall.title = "The Guildhall"
guildhall.subtitle = "Subtitle..."
map.addAnnotation(guildhall)
// The Halls 52.631120, 1.295712
var halls = MKPointAnnotation()
halls.coordinate.latitude = 52.631120
halls.coordinate.longitude = 1.295712
halls.title = "The Halls"
halls.subtitle = "Subtitle..."
map.addAnnotation(halls)
// The Assembly House 52.626867, 1.290733
var assembly = MKPointAnnotation()
assembly.coordinate.latitude = 52.626867
assembly.coordinate.longitude = 1.290733
assembly.title = "The Assembly House"
assembly.subtitle = "Subtitle..."
map.addAnnotation(assembly)
// Surrey House 52.625162, 1.293919
var surrey = MKPointAnnotation()
surrey.coordinate.latitude = 52.625162
surrey.coordinate.longitude = 1.293919
surrey.title = "Surrey House"
surrey.subtitle = "Subtitle..."
map.addAnnotation(surrey)
// City Hall 52.628645, 1.291606
var cityhall = MKPointAnnotation()
cityhall.coordinate.latitude = 52.628645
cityhall.coordinate.longitude = 1.291606
cityhall.title = "City Hall"
cityhall.subtitle = "Subtitle..."
map.addAnnotation(cityhall)
}
func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
println(locations)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
到目前为止还不错吗?任何帮助将不胜感激,这是我的第一个应用程序,所以简单地说将是伟大的!
谢谢,
山姆
最佳答案
可以在MKPinAnnotationView实例中设置rightCalloutAccessoryView。。
这是目标c中的示例代码。。。。
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
static NSString *identifier = your_identifier;
MKPinAnnotationView *annotationView = (MKPinAnnotationView *) [_mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
if (annotationView == nil) {
annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
} else {
annotationView.annotation = annotation;
}
annotationView.enabled = YES;
annotationView.canShowCallout = YES;
annotationView.image=[UIImage imageNamed:@"arrest.png"];//here we use a nice image instead of the default pins
//set right CalloutAccessoryView
annotationView.rightCalloutAccessoryView = UIButton.buttonWithType(buttonType: UIButtonTypeDetailDisclosure)
return annotationView;
}
关于ios - 使用MKAnnotationView制作MKPointAnnotation链接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36094442/