4

私は google MAPS API V3 にかなり慣れていないので、助けてもらいたいと思っています。サイトでポリゴンを描画していますが、正常に動作します。ポリゴンの座標を MYSQL データベースに保存します。テーブルの構造は次のとおりです。

CREATE TABLE IF NOT EXISTS `localite` (
  `id_localite` int(11) NOT NULL AUTO_INCREMENT,
  `libele_localite` varchar(255) NOT NULL,
  `lat_localite` text NOT NULL,
  `long_localite` text NOT NULL,
  PRIMARY KEY (`id_localite`)
)

ご覧のとおり、緯度と経度を別々の列に分割し、PHP を使用して座標を取得しています。

lat_localite 列には緯度座標のみが含まれ、long_localite 列には経度座標のみが含まれます。Javascript を使用してこの座標を取得し、コンテンツを 2 つの別々のテキストエリアに記述します。これはコードです。

google.maps.event.addListener(drawingManager, 'polygoncomplete', function(polygon) {
  var patths = polygon.getPath();
  var stuh = patths.getLength();
    var lat_localite='';
    var long_localite='';
        for (var i=0; i<(stuh) ;i++)
        {
        lat_localite  += (patths.getAt(i).lat()+'\n');
        long_localite += (patths.getAt(i).lng()+'\n');

        document.forms['formId'].elements['Textarea1ID'].value=lat_localite;
        document.forms['formId'].elements['Textarea2ID'].value=long_localite;

        }   
});

だから今、テーブルに保存されているすべてのポリゴンを表示したいのですが、どうすればよいかわかりません。

4

1 に答える 1

3

V3 を使用すると、非常に簡単です。

var polygons = [];

次に、次のコードを使用して、データベースからすべてのポリゴンをループします。

  //Add all your coordinates in with new google.maps.LatLng(lat, lng),
  var coords = [
    new google.maps.LatLng(12.5, -8.2),
    new google.maps.LatLng(12.52, -8.21),
    etc....
  ];

  // Construct the polygon
  polygons.push(new google.maps.Polygon({
    paths: coords,
    other_options: etc....
  }));

  polygons[polygons.length-1].setMap(map); //Your map object

第二に (興味深いことに)、MySql は空間データ型を使用してポリゴンを格納できます (ポリゴン データ型を見てください) 。

これは、データを照会する必要がある場合に役立ちます。最小の境界四角形に制限されていますが、このデータ型の方が適していると思います。

MySql から多角形を緯度/経度座標として抽出するには、mysql の AsText() 関数を参照してください。

例えば:

select AsText(my_polygon_column) as blob;

そして、それをこの php 関数に渡します。

function sql_to_coordinates($blob)
    {
        $blob = str_replace("))", "", str_replace("POLYGON((", "", $blob));
        $coords = explode(",", $blob);
        $coordinates = array();
        foreach($coords as $coord)
        {
            $coord_split = explode(" ", $coord);
            $coordinates[]=array("lat"=>$coord_split[0], "lng"=>$coord_split[1]);
        }
        return $coordinates;
    }
于 2012-06-07T21:54:52.473 に答える