2016-01-21 29 views
6

KML oluşturmak ve google haritaya veri görüntülemek için PHPShapefile kütüphanesini kullanıyorum ama 'Point' şeklindeyken çalışmıyor ve aynı KML oluşturmuyor. Çokgen şekli için kod snippet'i Nokta şekli için oluşturmama yardımcı oluyor.PHP - 'Point' şekline göre kml oluştur

//this shape data i'm fetching from shapefile library.   
$shp_data = $record->getShpData(); 
if (isset($shp_data['parts'])) { 
    $counter1 = 0; 
    if ($shp_data['numparts']) { 
    $polygon_array['polygon']['status'] = 'multi-polygon'; 
    } else { 
    $polygon_array['polygon']['status'] = 'single-polygon'; 
    } 

    $polygon_array['polygon']['total_polygon'] = $shp_data['numparts']; 

    foreach ($shp_data['parts'] as $polygon) { 
    foreach ($polygon as $points) { 
     $counter = 0; 
     $polygon_string = ''; 

     while ($counter < count($points)) { 
     if ($counter == 0) { 
      $polygon_string = $points[count($points) - 1]['x'] . ','; 
      $polygon_string .= $points[$counter]['y'] . ' ' . $points[$counter]['x'] . ','; 
     } else if ($counter == count($points) - 1) { 
      $polygon_string .= $points[$counter]['y']; 
     } else { 
      $polygon_string .= $points[$counter]['y'] . ' ' . $points[$counter]['x'] . ','; 
     } 
     $counter = $counter + 1; 
     } 
     $polygon_single[$counter1] = $polygon_string; 
     $polygon_array['polygon']['view'] = $polygon_single; 
     $counter1 = $counter1 + 1; 
    } 
    } 
    $arr[$i] = $polygon_array; 
    $i++; 
} 

cevap

1

Bu durum nokta geometrileri için başarısız olur:

if (isset($shp_data['parts'])) { 

Ne yazık öyle gibi gözüküyor sen geometri türünü tanımlamak için uygun bir yol yoktur kullandığınız şekil dosyası PHP kütüphanesi.

if (isset($shp_data['parts'])) { 
    // probably a polygon 
    // ... your code here ... 
} elseif(isset($shp_data['y']) && isset($shp_data['x'])) { 
    // probably a point 
    $point = []; 
    $point["coordinates"] = $shp_data['y'] .' '. $shp_data['x']; 
    $arr[$i]['point'] = $point; 
} 

Bu şuna benzer bir dizi yol açmalıdır: Yukarıdaki denetimi başarısız olursa geometri bir x ve y şöyle koordinat varsa Geçici bir çözüm olarak

, daha sonra kontrol edebilirsiniz

[0]=> 
    array(1) { 
    ["point"]=> 
    array(1) { 
     ["coordinates"]=> 
     string(34) "0.75712656784493 -0.99201824401368" 
    } 
    } 
+0

Bunun için herhangi bir alternatif kütüphane var mı? – Rorschach

+0

@Rorschach no, üzgünüm – chrki