2017-02-04 23 views
1

Swift 3の文脈では、私の質問に正確な解決策はありませんでした。私は私のアプリケーションで(GMSMarkerタイプの)複数のマーカーをプロットする必要があります。私のコードは以下の通りです。Googleマップ:Googleマップに複数のマーカーを追加するには

私は一箇所のみ(custlattの最後の値、custlong配列)がマークされているマーカーの配列を使用していたとしても
var markerDict: [Int: GMSMarker] = [:] 
var custlatt = [13.093781,13.034893,13.034893] 
var custlong = [77.576284,77.596372, 77.596372] 

override func viewDidLoad() { 
    super.viewDidLoad() 

    for i in 0...2{ 
     let camera = GMSCameraPosition.camera(withLatitude:custlatt[i], longitude: custlong[i], zoom: 10.0) 
     let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera) 
     view = mapView 

     markerDict[i] = GMSMarker() 
     markerDict[i]?.position = CLLocationCoordinate2D(latitude:custlatt[i], longitude: custlong[i]) 
     markerDict[i]?.title = "NAGAVARA" 
     markerDict[i]?.snippet = "Bengaluru" 
     markerDict[i]?.map = mapView 
    } 

。誰かが私が間違っていると示唆することができますか?あるいは、他の実装方法がありますか?あなたは

markerDict[0] = GMSMarker() 

は、それはそれ、次の4行のための

markerDict[i] = GMSMarker() 

すべきではない持って

答えて

0

最後のマーカーが表示されるのは、ループの次の繰り返しで唯一の参照を上書きするため、以前のマーカーがガベージコレクションされているということです。

+0

こんにちはAndrew、markerDict [i] = GMSMarker()を配置して質問を編集しました。しかし、まだ私は取得していない、サンプルコードのリポジトリを持っている場合は、ここにリンクを追加することができます。 –

0

forループ外でGmsMapviewをインスタンス化して問題を解決してください。

class MapVC:UIViewController{ 

    var markerDict: [String: GMSMarker] = [:] 
    var custlatt = [13.093781,13.034893,13.034893] 
    var custlong = [77.576284,77.596372, 77.596372] 
    var mapView:GMSMapView! 

    override func viewDidLoad() { 
    super.viewDidLoad() 
    mapView = GMSMapView() 
    mapView.frame = self.view.frame 
    setupViews() 
    for (i, element) in (["first","second","third"]).enumerated(){ 
     let camera = GMSCameraPosition.camera(withLatitude:custlatt[i], longitude: custlong[i], zoom: 10.0) 
     mapView.camera = camera 

     markerDict[element] = GMSMarker() 
     markerDict[element]?.position = CLLocationCoordinate2D(latitude:custlatt[i], longitude: custlong[i]) 
     markerDict[element]?.title = element 
     markerDict[element]?.snippet = element 
     markerDict[element]?.map = mapView 
} 
    } 
関連する問題