2016-05-02 5 views
1

固有の要素から新しい配列を作成し、私のコードです:複数のアレイのためにここで

  var things = new Object(); 
      things.location = new Array(); 
      for (var i = 0; i < clickedMarkers.length; i++) { 
       var mark = clickedMarkers[i], 
        markLatitude = mark.position.lat(), 
        markLongitude = mark.position.lng(); 

       things.location.push({ 
        'lat': markLatitude, 
        'lng': markLongitude 
       }); 
      } 

結果として、我々は以下のペアを持っている:

{lat:53.5412,lng:9.994180000000028},{lat:53.0862838,lng:8.789075099999991}, {lat:53.0738902,lng:8.805211800000052},{lat:53.5412,lng:9.994180000000028},{lat:53.5412,lng:9.994180000000028} 

私は比較次のコードを使用して、各ペアの要素を 'lat'で置き換えます。

  var arr = {}; 

      for (var j=0, len=things.location.length; j < len; j++) 
       arr[things.location[j]['lat']] = things.location[j]; 

      things.location = new Array(); 

      for (var key in arr) 
       things.location.push(arr[key]); 

しかし正しい方法は、paの両方の要素ir latとlngは異なります。なぜなら、pairの大きな配列のためにlatは同じであるかもしれませんが、lngは異なります。

各ペアの両方の要素を比較するにはどうすればよいですか?

答えて

1

geocodezipの回答に基づいています。次のコードを使用:

//get all markers for the cluster; 
    var clickedMarkers = cluster.getMarkers(); 

    //get the base point to compare all other markers 
    var base = new google.maps.LatLng(clickedMarkers[0].position.lat(), clickedMarkers[0].position.lng()); 

      var total = 0; 
      for (var i = 0; i < clickedMarkers.length; i++) { 
       var mark = clickedMarkers[i], 
        markLatitude = mark.position.lat(), 
        markLongitude = mark.position.lng(); 
       var _coordinates = new google.maps.LatLng(markLatitude, markLongitude); 

       var point = google.maps.geometry.spherical.computeDistanceBetween(_coordinates, base); 
       total= total + point; 
      } 

      console.log('total', total); 

      if (total == 0) 
      {some action} 
関連する問題