2017-02-09 9 views
0

オブジェクト私はこのようなデータている:new google.maps.LatLng(37.782551, -122.445368):合計でがGoogleマップを作成するには、応答データを反復

"meta":{"About thisdata"}, "objects": [{"beat": "1614", "block": "081XX W HIGGINS RD", "case_number": "JA100466", "classification": "/api/1.0-beta3/crimeclassification/83/", "community_area": "/api/1.0-beta3/communityarea/10/", "community_name": "Norwood Park", "community_number": 10, "community_slug": "norwood-park", "crime_date": "2016-12-30T18:00:00", "description": "$500 AND UNDER", "domestic": false, "fbi_code": "06", "id": "10801504", "iucr": "0820", "latitude": 41.985421498, "location_description": "STREET", "longitude": -87.829756604, "primary_type": "THEFT", "ward": 41, "year": 2016}, 

は、これは私がこれらの500を作成しようとしています

を「オブジェクト」の下に500個のオブジェクトを持っています返される

function getPoints() { 
     return [ 
      new google.maps.LatLng(37.782551, -122.445368), 
      new google.maps.LatLng(37.782745, -122.444586), 
      new google.maps.LatLng(37.782842, -122.443688) 

     ] 
} 

:このような配列に格納する

ここでは、このような

function initMap() { 
    map = new google.maps.Map(document.getElementById("map"), { 
    center: { lat: 41.881, lng: -87.629 }, 
    zoom: 12, 
    mapTypeId: 'satellite' 
    }); 

    heatmap = new google.maps.visualization.HeatmapLayer({ 
    data: makeMarkers(), <-- Here 
    map: map 
    }); 
} 

コード、私が試してみました外観:それはforEachの内だから

var makeMarkers = function() { 
    var result = []; 
    var lat, lng = []; 
    resp.objects.forEach(function(objects) { 
    lat.objects.latitude; 
    lng = objects.longitude; 
    return [new google.maps.LatLng(lat, lng)] 
}) 
} 

ではなく、新しいオブジェクトの配列を返すのは、それが1つのグーグルオブジェクトと500個の新しい配列を返します。私が探しているものを手に入れる方法がわからない。私はスコープでかなりの量を苦労し、データを反復する。

ありがとうございました!

答えて

1

respオブジェクトは投稿の上部にあるオブジェクトであると仮定します。まず、アレイ上にmapを使用して、実際に配列を戻すことになります。それは、アレイ内のすべての要素に作用するので、

地図

地図はforEachのに似ています。相違点は、mapへのコールバック内で、更新された要素を返すことです。

例:[2, 4, 6, 8]次のよう

[1, 2, 3, 4].map(function (element) { 
    return element * 2 
} 

上記の配列を返すと。 コールバックメソッド内の戻り値に注意してください。

あなたのケースでは

私はあなたが何であるかを正しく理解していればあなたは、Googleマップのオブジェクト(すなわちgoogle.maps.LatLng(lat, lng)

にごrespmapこれらの要素のそれぞれからobjectsの配列を取得したいです次のことがうまくいくはずです。私はmapのもっと簡単な例で遊んでみることをお勧めします(また、filterforEach、およびreduce(いくつかの言語ではfoldr)を知っておくと良いです)。

var makeMarkers = function() { 
    var result = []; 
    var lat, lng = []; 
    return resp.objects.map(function(element) { 
    lat = element.latitude; 
    lng = element.longitude; 
    return new google.maps.LatLng(lat, lng); 
    }) 
} 
+0

私は十分に自分自身を説明しているか分かりません。私はより簡潔になります。私は、500オブジェクトからLatとLngをすべて取り出し、googeのドキュメントのように 'new google.maps.LatLng(Latitude、Longitude) 'のインスタンスを500個配列します - > https:// developers .google.com/maps/documentation/javascript/examples/layer-heatmap – Quesofat

+0

その場合、上記の操作を行う必要があります。 'objects'配列の各要素について、lat/lngが引き出され、新しいGoogle Mapsオブジェクトが作成されます。それらはすべて配列にマップされ、返されます。 –

+0

Err。私はすでに何を持っていたのですか? – Quesofat

関連する問題