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);
 }
Esempio n. 2
0
 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 */
 }
Esempio n. 3
0
function simplePolyline($points)
{
    $reducer = new PolylineReducer($points);
    $simple = $reducer->SimplerLine(0.001);
    $p = new PolylineEncoder();
    $pl = $p->dpEncode($simple);
    return $pl[2];
}
Esempio n. 4
0
 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'];
}