2016-04-16 14 views
7

Làm thế nào để mảng bên dưới được đặt. Tôi đang cố gắng thêm nhiều chú thích vào bản đồ của mình. Tôi đã có thể tìm thấy mã dưới đây trên stackoverflow nhưng họ đã không hiển thị như thế nào để thiết lập các mảng.cách thiết lập mảng cho nhiều chú thích nhanh chóng

var objects = [ 
       //how should the array be setup here 
       ] 

for objecters in objects!{ 
    if let latit = objecters["Coordinates"]["Latitude"]{ 
     self.latitudepoint = latit as! String 
     self.map.reloadInputViews() 
    } 
    else { 
     continue 
    } 
    if let longi = objecters["Coordinates"]["Longitude"]{ 
     self.longitudepoint = longi as! String 
     self.map.reloadInputViews() 
    } 
    else { 
     continue 
    } 
    var annotation = MKPointAnnotation() 
    var coord = CLLocationCoordinate2D(latitude: Double(self.latitudepoint)!,longitude: Double(self.longitudepoint)!) 
    mapView.addAnnotation(annotation) 
} 
+0

Thay vì đảo ngược kỹ thuật mã này (mảng đối tượng của mình xuất hiện là một mảng từ điển, mỗi từ khóa có một khóa 'Coordinates' có giá trị là một từ điển khác có khóa' Latitude' và 'Longitude'), câu hỏi thực là _your_ mô hình trông như thế nào và chúng tôi sẽ chỉ cho bạn cách thêm chú thích vào bản đồ của bạn. Nhưng đừng cố gắng trang bị thêm mô hình của bạn vào mã này, nhưng hãy viết mã phù hợp với mô hình của bạn. (Như một sang một bên, đoạn mã này không được viết rất tốt và có vấn đề, vì vậy tôi sẽ ngần ngại sử dụng nó ở tất cả.) – Rob

+0

Cảm ơn bạn đã trả lời rob. Mỗi mảng phải chứa 3 mục vĩ độ, kinh độ và chuỗi. tôi muốn sử dụng các tọa độ để vẽ các chú thích và khi chú thích được khai thác bởi người dùng, chuỗi sẽ xuất hiện và nếu chuỗi được khai thác, nó sẽ mở một bộ điều khiển xem khác cho phép truy cập để sử dụng lại chuỗi –

Trả lời

19

Bạn có thể làm gì, ví dụ:

let locations = [ 
    ["title": "New York, NY", "latitude": 40.713054, "longitude": -74.007228], 
    ["title": "Los Angeles, CA", "latitude": 34.052238, "longitude": -118.243344], 
    ["title": "Chicago, IL",  "latitude": 41.883229, "longitude": -87.632398] 
] 

for location in locations { 
    let annotation = MKPointAnnotation() 
    annotation.title = location["title"] as? String 
    annotation.coordinate = CLLocationCoordinate2D(latitude: location["latitude"] as! Double, longitude: location["longitude"] as! Double) 
    mapView.addAnnotation(annotation) 
} 

Hoặc cách khác, sử dụng một kiểu tùy chỉnh, ví dụ:

struct Location { 
    let title: String 
    let latitude: Double 
    let longitude: Double 
} 

let locations = [ 
    Location(title: "New York, NY", latitude: 40.713054, longitude: -74.007228), 
    Location(title: "Los Angeles, CA", latitude: 34.052238, longitude: -118.243344), 
    Location(title: "Chicago, IL",  latitude: 41.883229, longitude: -87.632398) 
] 

for location in locations { 
    let annotation = MKPointAnnotation() 
    annotation.title = location.title 
    annotation.coordinate = CLLocationCoordinate2D(latitude: location.latitude, longitude: location.longitude) 
    mapView.addAnnotation(annotation) 
} 

Hoặc bạn có thể thay thế mà for vòng lặp với map:

let annotations = locations.map { location -> MKAnnotation in 
    let annotation = MKPointAnnotation() 
    annotation.title = location.title 
    annotation.coordinate = CLLocationCoordinate2D(latitude: location.latitude, longitude: location.longitude) 
    return annotation 
} 
mapView.addAnnotations(annotations) 
+0

hoàn hảo. Tôi đang tìm kiếm. Cảm ơn bạn đã giúp đỡ rất nhiều –

+0

Không, cảm ơn là cần thiết. Tuy nhiên, tôi nhận thấy bạn dường như không chấp nhận câu trả lời cho câu hỏi của bạn. Xem [Tôi nên làm gì khi ai đó trả lời câu hỏi của tôi?] (Http://stackoverflow.com/help/someone-answers) Tôi khuyên bạn không chỉ xem xét chấp nhận câu trả lời này, mà còn trả lời các câu hỏi cũ của bạn và xem liệu có bất kỳ câu trả lời nào mà bạn nên chấp nhận. – Rob

+1

tôi không bao giờ nhận ra tôi đã chấp nhận nhưng tôi chỉ làm theo câu trả lời của bạn, tôi sẽ quay trở lại tất cả các câu hỏi khác của tôi và chọn câu trả lời phù hợp với tôi –

Các vấn đề liên quan