public function toJSON() { $polylineEncoder = new PolylineEncoder(); $arr = array(); $points = $this->getPoints(); foreach ($points as $point) { list($encodedPoints, $encodedLevels, $encodedLiteral) = $polylineEncoder->dpEncode($points); $arr['points'] = $points; $arr['encoded'] = array('points' => $encodedPoints, 'levels' => $encodedLevels, 'numLevels' => 18, 'zoomFactor' => 2); } return Convert::raw2json($arr); }
public function circle_map($lat, $lng) { /* set some options */ $MapLat = $lat; // latitude for map and circle center $MapLng = $lng; // longitude as above $Rad = 100; // the radius of our circle (in Kilometres) $MapFill = 'FF00A2'; // fill colour of our circle $MapBorder = '91A93A'; // border colour of our circle $MapWidth = 210; // map image width (max 640px) $MapHeight = 210; // map image height (max 640px) $Lat = $MapLat; $Lng = $MapLng; $Detail = 8; $R = 1600000; $pi = pi(); $Lat = $Lat * $pi / 180; $Lng = $Lng * $pi / 180; $d = $Rad / $R; $points = array(); $i = 0; for ($i = 0; $i <= 360; $i += $Detail) { $brng = $i * $pi / 180; $pLat = asin(sin($Lat) * cos($d) + cos($Lat) * sin($d) * cos($brng)); $pLng = ($Lng + atan2(sin($brng) * sin($d) * cos($Lat), cos($d) - sin($Lat) * sin($pLat))) * 180 / $pi; $pLat = $pLat * 180 / $pi; $points[] = array($pLat, $pLng); } require_once 'PolylineEncoder.php'; $PolyEnc = new PolylineEncoder($points); $EncString = $PolyEnc->dpEncode(); $EncString = $EncString['Points']; /* put together the static map URL */ $MapAPI = 'http://maps.google.com.au/maps/api/staticmap?'; $MapURL = $MapAPI . 'center=' . $MapLat . ',' . $MapLng . '&zoom=15&size=' . $MapWidth . 'x' . $MapHeight . '&maptype=roadmap&path=fillcolor:0x' . $MapFill . '33%7Ccolor:0x' . $MapBorder . '00%7Cenc:' . $EncString . '&sensor=false'; return $MapURL; /* output an image tag with our map as the source */ }
function simplePolyline($points) { $reducer = new PolylineReducer($points); $simple = $reducer->SimplerLine(0.001); $p = new PolylineEncoder(); $pl = $p->dpEncode($simple); return $pl[2]; }
public function toXML() { $polylineEncoder = new PolylineEncoder(); $xml = "<{$this->Name} srid=\"" . Convert::raw2att($this->srid) . "\">"; $rings = $this->getRings(); if ($rings) { foreach ($rings as $ring) { $inverseRing = array(); foreach ($ring as $point) { $inverseRing[] = array_reverse($point); } $xml .= "<ring>"; list($encodedPoints, $encodedLevels, $encodedLiteral) = $polylineEncoder->dpEncode($inverseRing); $xml .= "<encoded><![CDATA[{$encodedPoints}]]></encoded>"; $xml .= "<points>"; foreach ($ring as $coordPair) { $xml .= '<point x="' . Convert::raw2xml($coordPair[0]) . '" y="' . Convert::raw2xml($coordPair[1]) . '" />'; } $xml .= "</points>"; $xml .= "</ring>"; } } $xml .= "</{$this->Name}>"; return $xml; }
function GMapCircle($Lat, $Lng, $Rad, $Detail = 8) { $R = 6371; $pi = pi(); $Lat = $Lat * $pi / 180; $Lng = $Lng * $pi / 180; $d = $Rad / $R; $points = array(); $i = 0; for ($i = 0; $i <= 360; $i += $Detail) { $brng = $i * $pi / 180; $pLat = asin(sin($Lat) * cos($d) + cos($Lat) * sin($d) * cos($brng)); $pLng = ($Lng + atan2(sin($brng) * sin($d) * cos($Lat), cos($d) - sin($Lat) * sin($pLat))) * 180 / $pi; $pLat = $pLat * 180 / $pi; $points[] = array($pLat, $pLng); } require_once 'PolylineEncoder.php'; //http://www.svennerberg.com/examples/polylines/PolylineEncoder.php.txt $PolyEnc = new PolylineEncoder($points); $EncString = $PolyEnc->dpEncode(); return $EncString['Points']; }