예제 #1
0
파일: Point.php 프로젝트: cargomedia/cm
 /**
  * @param CM_Geo_Point $pointTo
  * @return float
  */
 public function calculateDistanceTo(CM_Geo_Point $pointTo)
 {
     $pi180 = M_PI / 180;
     $currentRadianLatitude = $this->getLatitude() * $pi180;
     $currentRadianLongitude = $this->getLongitude() * $pi180;
     $againstRadianLatitude = $pointTo->getLatitude() * $pi180;
     $againstRadianLongitude = $pointTo->getLongitude() * $pi180;
     $arcCosine = acos(sin($currentRadianLatitude) * sin($againstRadianLatitude) + cos($currentRadianLatitude) * cos($againstRadianLatitude) * cos($currentRadianLongitude - $againstRadianLongitude));
     return CM_Model_Location::EARTH_RADIUS * $arcCosine;
 }
예제 #2
0
 /**
  * @expectedException CM_Exception_Invalid
  */
 public function testGetSetLongitudeOutOfRange()
 {
     $point = new CM_Geo_Point(11.2, 13.2);
     $point->setLongitude(300);
 }
예제 #3
0
파일: PointTest.php 프로젝트: cargomedia/cm
 public function testFromArray()
 {
     $data = ['latitude' => 51.3, 'longitude' => 52.4];
     $point = new CM_Geo_Point(51.3, 52.4);
     $this->assertEquals($point, CM_Geo_Point::fromArray($data));
 }