HTML フォームの post メソッドを使用して、ページを書き込む perl ファイルにユーザー入力要求を送り返しています。私の質問は、青い背景の部分にある緯度と経度の検索ボックスに関するものです。この例のコードをマップに追加して、クリック イベントでマウス クリックの緯度/経度が点滅する関数を導入しました。
この機能をフォームに統合する方法はありますか? できるだろうか
a) この機能のオンとオフを切り替えるフォームのボタンを追加しますか? (すべてのクリックでデータベースが検索されるわけではありません)
と
b) post メソッド、または同様のものを使用して、クリックから得られた座標を perl ファイルに送り返しますか?
これは関連する javacript です。
OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control,
{
defaultHandlerOptions:
{
'single': true,
'double': false,
'pixelTolerance': 0,
'stopSingle': false,
'stopDouble': false
},
initialize: function(options)
{
this.handlerOptions = OpenLayers.Util.extend({}, this.defaultHandlerOptions);
OpenLayers.Control.prototype.initialize.apply(this, arguments);
this.handler = new OpenLayers.Handler.Click(this,
{
'click': this.trigger
}
, this.handlerOptions);
},
trigger: function(e)
{
var lonlat = map.getLonLatFromPixel(e.xy);
alert("You clicked near " + lonlat.lat + " N, " +
+ lonlat.lon + " E");
}
});
次に、マップの初期化で私も使用します
var click = new OpenLayers.Control.Click();
map.addControl(click);
click.activate();
html
フォームは次のようになります。
<form action='maps7.pl' method='post'>
Latitude: <input type="float" name="lat"><br>
Longitude: <input type="float" name="long"><br>
<INPUT TYPE="submit" VALUE="What maps are here?"><br>
OR<br>
Place Name: <input type="text" name="place"><br><br>
</form>
現在、 を使用してクエリ結果を実行しperl dbi
、このコードを使用して変数として保存しています。
$cgi = new CGI;
for $key ($cgi->param())
{
$input{$key} = $cgi->param($key);
}
$searchseries = $input{series};
$slat = $input{lat};
$slong = $input{long};
したがって、必要に応じて、関数を新しい変数として変更または形成できるようにしたいと考えています$slat
。$slong