2017-01-25 13 views
1

次のように私は残りのサービスからデータを取得し、マーカーに新しいオブジェクトをプッシュしています、angle2とtypescriptの配列にオブジェクトをプッシュするにはどうすればいいですか?

markers: marker[] = [ 
    { 
     lat: 51.673858, 
     lng: 7.815982, 
     label: 'A', 
     draggable: true 
    } 
    ]; 

を配列を定義しています。

メッセージ: '型の引数' { '緯度'

private data: any; 
    findLocation(): void { 
    let result; 
    result = this.geoService.loaddata(this.location) 
    .subscribe(data => { 
     result = data; 
     console.log(result); 
     this.markers.push({'lat':results[0].geometry.location.lat,'lng':results[0].geometry.location.lng}) 
    }); 
    } 

それは言っファイルエラーをスロー任意。 } 'は'マーカー 'タイプのパラメータ に割り当てられません。プロパティ 'lng'がタイプ '{ ' lat ':any; } '。' 【 { "address_components":[ { "LONG_NAME": "コロンボ"、 "SHORT_NAME": "コロンボ"、 」

結果は

{ "結果" であります"タイプ:":["locality"、 "political"] }、 { "long_name": "Colombo"、 "short_name": "Colombo"、 "types":["administrative_area_level_2"、 "politi CAL」] }、 { "LONG_NAME": "西部州"、 "SHORT_NAME": "WP"、 "タイプ":[ "administrative_area_level_1"、 "政治"] }、 { "LONG_NAME" : "スリランカ"、 "SHORT_NAME": "LK"、 "タイプ":[ "国"、 "政治的"] } ]、 "formatted_address": "コロンボ、スリランカ"、 "幾何学" :{ "bounds":{ "北東":{ "lat":6.9812866, "lng":79.8900852 }、 "南西":{ "LAT":6.862390700000001、 "LNG":79.8223258 } }、 "場所":{ "LAT":6.9270786、 "LNG":79.861243 }、 "LOCATION_TYPE": "近似"、 "ビューポート":{ "北東":{ "LAT":6.980584400000001、 "LNG":79.8900852 }、 "南西":{ "LAT":6.8625113、 "lng":798225192 } } }、 "place_id": "ChIJA3B6D9FT4joRjYPTMk0uCzI"、 "タイプ":[ "地域"、 "政治的"] }]、 "ステータス": "OK"}

+0

なぜあなたのjsonに2つのlatがありますか? –

+0

結果に何がありますか –

+0

それはlngでなければなりません – Sajeetharan

答えて

8

private data: any; 
    findLocation(): void { 
    let result; 
    // no use for "result" below 
    // result = this.geoService.loaddata(this.location) 
    // use the following instead 
    this.geoService.loaddata(this.location) 
    .subscribe(data => { 
     result = data; 
     console.log(result); 
     this.markers.push({'lat':results[0].geometry.location.lat,'lng':results[0].geometry.location.lng}) 
    }); 
    } 

ので、あなたのプッシュは、次のようになります。

this.markers.push({'lat':result[0].geometry.location.lat,'lng':result[0].geometry.location.lng}) 
     }); 

しかし、マーカーで、あなたもlabeldraggableを宣言しているので、あなたがあまりにもそれらの属性に値をプッシュする必要があるので、これはあまりにも、エラーがスローされます。

2

ルックス

this.markers.push({ 
    'lat': results[0].geometry.location.lat, 
    'lat': results[0].geometry.location.lng 
}) 

は次のようになります:

this.markers.push({ 
    'lat': results[0].geometry.location.lat, 
    'lng': results[0].geometry.location.lng 
}) 
+0

で更新しました。それでもうまくいきません。 – Sajeetharan

+0

同じエラーが表示されますか?あなたの質問に追加したデータの形を考えると、階層は正しいように見えます。 – Brandon

+0

ok申し訳ありませんが、私は他の2つのプロパティラベルとdraggableを逃していた – Sajeetharan

2

まず第一に、あなたはあなたは、単純なタイプミスを持っているようにそこにタイプミスがある場合、resultsという変数にアクセスしますが、resultしかありません。

第2に、その結​​果変数はほとんど意味がありません。これを試してください:あなたはresult、ないresultsにデータを登録している

// private data: any; // Remove this field 
findLocation(): void { 
    // no result variable here 
    this.geoService.loaddata(this.location) 
    .subscribe(results => { // declare results this way 
     console.log(results); 
     this.markers.push({ 
      'lat':results[0].geometry.location.lat, 
      'lnt':results[0].geometry.location.lng 
     }); 
    }); 
} 
1
this.geoService.loaddata(this.location) 
     .subscribe(data => { 
     result = data; 
     this.markers.push({'lat':data.geometry.location.lat,'lng':data.geometry.location.lng}) 
    }); 
関連する問題