2016-01-21 8 views
6

私はライブラリを使用してKMLを生成し、Googleマップにデータを表示しますが、 'Point'形状は機能していないため、KMLを生成しません。 ここでは、多角形のコードスニペットを使用して、ポイントシェイプの作成に役立ちます。PHP - 'Point'の形状からkmlを生成

//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++; 
} 

答えて

1

この条件は、ポイントジオメトリのために失敗します。

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

を残念ながら、それはあなたが使用しているシェープファイルPHPライブラリはジオメトリタイプを識別するための適切な方法を持っていないことのように見えます。

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

これは次のようになります配列をもたらすべきである:

上記のチェックが失敗した場合、ジオメトリは xyそうのような座標を持っている場合、あなたは確認することができます回避策として

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

代替ライブラリがありますか? – Rorschach

+0

@Rorschach no、申し訳ありません – chrki

関連する問題