2013-07-21 7 views
6

ポイントがポリゴンの一部であるかどうかを確認する方法を探していました。このポリゴンはファイルからロードされます。GoogleマップポイントがPHPのポリゴンであるかどうか確認してください

この質問に関連するすべての回答はjavascriptで解決されていますが、私はこれをサーバー側で行う必要があります。これは結果をWebクライアントとしてユーザーに表示する必要がないため、その領域(ポリゴン)内のユーザーグループ(システムを使用するユーザー)を選択するためのパラメータとして格納し、後で使用する必要があります。

私はGoogle Maps API for PHPを探しましたが、それはまったく存在しないようです。 this oneが見つかりましたが、Googleとは関係がなく、フロントエンドにも注目しています。

また、私はREST APIを探しました。私のPHPにコンテンツを読み込んで解析するのは比較的簡単でしたが、GoogleがJS APIに全力を尽くしたようです。

これに対応する方法はありますか?

編集1:@Spacedmanが要求されたように、ファイル形式はKML

明確化1です:私は(それはJSで存在する)Googleは、このためのツールを提供することを期待。アルゴリズムを介してチェックするためにファイルを解析することは可能性であり、正しく動作するかどうかを確認する必要があります。

答えて

6

あなたの好みの検索エンジンで "多角形でPHPのポイント" を検索してみてくださいましたか?トップヒット:

http://assemblysys.com/php-point-in-polygon-algorithm/

これは、走査線アルゴリズムを使用して、いくつかの例があります。あなたがする必要があるのは、ポリゴンファイルを適切なフォーマット(あなたはあなたが持っているフォーマットを言うのを怠っている)に読み込んで、その関数を呼び出すことだけです。 iCheckが外にあるポイントをペアであれば、

int iCheck=0;  
for (i = 0, v = HowManyVecotrsHasThePolygon - 1; i < HowManyVecotrsHasThePolygon; v = i++) 
        { 
         if (((vectorPointLatitud[i] > ptoLatitud) != (vectorPointLatitud[v] > ptoLatitud)) && (ptoLongitud < (vectorPointLongitud[v] - vectorPointLongitud[i]) * (ptoLatitud - vectorPointLatitud[i])/(vectorPointLatitud[v] - vectorPointLatitud[i]) + vectorPointLongitud[i])) 
          iCheck++; 
        } 

をしても

チェックアウトPolygons Eric Haines内側:

+1

私はGoogleが単純なツール(関数、クラス)を提供してファイルを解析できると考えていたので、最終的には解決策だと思っていたので、私はこの答えを受け入れました。結局私の解決にはしばらく時間がかかりました。あなたが言ったように、ファイルを解析し、ポリゴンアルゴリズムでポイントを使用します。 – Absulit

+0

これは、ページがブラウザに完全に読み込まれた場合にのみ適用されます。あなたは自動的にcronの仕事の権利を使用してポイントを把握することができませんでしたか? –

1

あなたは(類似しているはずPHPで)このような気にいらを試すことができます。私は彼からアイデアを得た。

アイデアは、あなたがあなたのポイントからレイを作成し、この線の間でどのように多くの交差をチェックするためにきたで、ポリゴンは、あなたがどんな本で確認することができ、アルゴリズムは代数の少しだけある

ベクトル。

関連する問題