2016-04-04 6 views
0

ためにmapboxでカスタムマーカーを追加します。マップを作成するには、配列を探すforループを使用しました。私はmapboxビュー内の各マーカーのために異なる画像を追加しようとしている</p> <p>...私は少しここにこだわっているループ

for arrayInterest in dicoInterest { 

     let point = MGLPointAnnotation() 
     var latitudePoint : Double 
     var longitudePoint : Double 
     var typePoint : String 
     latitudePoint = (arrayInterest["latitude"] as! Double) 
     longitudePoint = (arrayInterest["longitude"] as! Double) 
     typePoint = (arrayInterest["type"] as! String) 
     point.coordinate = CLLocationCoordinate2D(latitude: latitudePoint, longitude: longitudePoint) 

     mapView.addAnnotation(point) 

     print("latitude : \(latitudePoint)") 
     print("longitude : \(longitudePoint)") 
     print("point : \(point)") 
     print("type : \(typePoint)") 


    } 

これまでのところとても良いです。

func mapView(mapView: MGLMapView, imageForAnnotation annotation: MGLAnnotation) -> MGLAnnotationImage? { 

    var annotationImage = mapView.dequeueReusableAnnotationImageWithIdentifier(typePoint) 
    var image = UIImage(named: typePoint) 
    image = image?.imageWithAlignmentRectInsets(UIEdgeInsetsMake(0, 0, image!.size.height/2, image!.size.width/2)) 
    annotationImage = MGLAnnotationImage(image: image!, reuseIdentifier:"\(point)") 
    return annotationImage 
} 

私はループの外でそれを置くために追加し、したがって、それは各マーカーの仕事をdoesntの:問題は、これだった私は、オンラインで探して見つけ、特定の画像を追加する唯一の方法です。

これを行う別の方法はありますか?

答えて

0

まだ別の画像を追加することはできます。マーカーを追加するたびにこの関数が呼び出されるため、別の画像を追加することができます。

import UIKit 
import Mapbox 

class yourClassController: UIViewController{ 

//define an image var in your class 
var markerImage = UIImage(name: "defaultMarker.png") 


     override func viewDidLoad() {  
     super.viewDidLoad()  

      //Set new image in yout loop 
      for arrayInterest in dicoInterest { 

        //new marker Image 
        markerImage = UIImage(name:newImageName) 
      } 
     } 

    } 


// MARK: - MKMapViewDelegate// Use Extension 
extension yourClassController: MGLMapViewDelegate { 

     func mapView(mapView: MGLMapView, imageForAnnotation annotation: MGLAnnotation) -> MGLAnnotationImage? { 

     let annotationImage = MGLAnnotationImage(image: markerImage, reuseIdentifier: "NewIdentiferName") 

     return annotationImage 

     } 
    } 

それはそれ以外の場合は、常に同じ画像を取る、常に画像のための新しいreuseIdentifierを設定することが重要です。

コードはテストされていませんが、原則が明確であることを願って

関連する問題