我正在使用 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
/或形成新变量。