2016-05-02 8 views
1

Hier einzigartig sind, ist ein Stück von meinem Code:ein neues Array aus den Elementen, die für mehrere Arrays

  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 
       }); 
      } 

als Ergebnis haben wir die folgenden Paare:

{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} 

Ich vergleiche die Element jedes Paares von ‚lat‘, mit dem folgenden Code:

  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]); 

aber die richtige Art und Weise zu vergleichen, dass beide Elemente des pa ir lat und lng sind unterschiedlich, weil für die große Anzahl von Paaren - lat gleich sein kann, aber lng - sich unterscheiden.

Wie vergleicht man beide Elemente jedes Paares?

Antwort

1

Basierend auf geocodezips Antwort. Verwendete den folgenden Code:

//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} 
Verwandte Themen