2016-05-10 5 views
0

私はAngularJSでng-mapディレクティブを使用しています。 マークを生成するためのコードがあります。 例(https://ngmap.github.io/#/!marker_with_ng_repeat_dynamic.html) のように、すべてのマークに対してlatとlongの配列を保存し、情報が正しいことをログで確認できます。しかし、私の地図には追加されていません。ng-map vm.positionsは更新されません

var app = angular.module('myApp', ['ngMap']); 
app.controller('mapController', function($interval, $http) { 
    var generateMarkers = function() { 
     var vm = this; 
     vm.positions = []; 
     $http.get("data"). 
      success(function(data) { 
      console.log(data); 
      console.log("length array" + data.length); 
      for (i = 0; i < data.length; i++) { 
       var lat = parseFloat(data[i].latitud); 
       var lng = parseFloat(data[i].longitud); 
       console.log("pos: " +lat + lng); 
       vm.positions.push([lat, lng]); 
       console.log("vm.positions", vm.positions); 
      } 
     }). 
     error(function (data) { 
      console.log("fallo"); 
     }); 
    }; 
    $interval(generateMarkers, 20000); 
}); 

そして、私のHTMLコード:

<ng-map zoom="14" center="[42.8169, -1.6432]" default-style="false"> 
    <marker ng-repeat="p in vm.positions" position="{{p}}"></marker> 
</ng-map> 

そして、ここに私のログ:

ここ
vm.positions [Array[2], Array[2], Array[2], Array[2], Array[2], Array[2], Array[2], Array[2], Array[2], Array[2]]0: Array[2]0: 42.8133161: -1.647981length: 2__proto__: Array[0]1: Array[2]0: 42.811868050589231: -1.635117530822754length: 2__proto__: Array[0]2: Array[2]0: 42.811868050589231: -1.639484167098999length: 2__proto__: Array[0]3: Array[2]0: 42.8139773239805951: -1.6452884674072266length: 2__proto__: Array[0]4: Array[2]0: 42.815834684266571: -1.6393446922302246length: 2__proto__: Array[0]5: Array[2]0: 42.8169010671877861: -1.6428154706954956length: 2__proto__: Array[0]6: Array[2]0: 42.8160038901641541: -1.6477882862091064length: 2__proto__: Array[0]7: Array[2]0: 42.811805086098651: -1.6448163986206055length: 2__proto__: Array[0]8: Array[2]0: 42.8174086747381: -1.6568756103515625length: 2__proto__: Array[0]9: Array[2]0: 42.805945172637361: -1.6659602522850037length: 2__proto__: Array[0]length: 10__proto__: Array[0]concat: concat()constructor: Array()copyWithin: copyWithin()entries: entries()every: every()fill: fill()filter: filter()find: find()findIndex: findIndex()forEach: forEach()includes: includes()indexOf: indexOf()join: join()keys: keys()lastIndexOf: lastIndexOf()length: 0map: map()pop: pop()push: push()reduce: reduce()reduceRight: reduceRight()reverse: reverse()shift: shift()slice: slice()some: some()sort: sort()splice: splice()toLocaleString: toLocaleString()toString: toString()unshift: unshift()Symbol(Symbol.iterator): values()Symbol(Symbol.unscopables): Object__proto__: Object 

plnkr:ここ

は私AngularJSコードですhttp://plnkr.co/edit/5uGUeyeuAie0TAFzIHMo?p=preview それはに似ていますこの例では、GET Requestを追加して、値oの配列を取得しますfラットとlng。 GET要求を削除し、データの値を更新するplnkを更新しました。

+1

あなたの質問にplnkrを提供できますか?何を試しましたか? –

+0

plnkrを追加します。これは例と似ていますが、GET Requestを追加してlatとlngの値を持つ配列を取得します。 – Jfhs19

答えて

0

あなたが関数内に次のコードを取る

http://plnkr.co/edit/4EHaJXNWfVFCIHvCOu5p?p=preview

plunkr作業を確認してください関数からそれを取り出してください。

var vm = this; 
vm.positions = []; 
+0

URLはうまくあり、データとも呼ばれます。 [ { "codigo": "0"、 "LATITUD": "42.813316"、 "longitud": "-1.647981"、 "ノンブル": "NAME0"、 "porcentaje" APIは私にこれを返します:0.5255555555555556 }、{ "codigo": "1"、 "LATITUD": "42.81186805058923"、 "longitud": "-1.635117530822754"、 "ノンブル": "NAME1"、 "porcentaje":0.7942238267148014 } ] forと繰り返し、プッシュは正常に動作しますが、マップ内のマークを更新しないでください – Jfhs19

+0

私の答えは編集してください –

+0

私があなたを手伝ってくれたら同意してください。 –

関連する問題