到目前为止,我还有一个隐蔽的脚本来从地址中获取经度和纬度。 问题是我无法提交,而提交按钮用于获取经度和纬度。
所以我想要以下内容: 地址将被放置在隐藏字段中。 (由我的CMS,ExpressionEngine填充) 与页面加载相比,经度和纬度将收集在两个输入字段中 而不是按提交和完成。
但是如何做到这一点,我到目前为止使用以下代码。 请帮忙。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Longitude and Latitude from address</title>
<script src="http://maps.google.com/maps?file=api&v=2&key=YOUR KEY" type="text/javascript" charset="utf-8">
</script>
<script type="text/javascript">
//<![CDATA[
function load() {
if (GBrowserIsCompatible()) {
geocoder = new GClientGeocoder();
}
}
function showAddress(geolocation) {
if (geocoder) {
geocoder.getLatLng(
geolocation,
function(point) {
if (!point) {
alert(geolocation + " not found");
} else {
document.geoform.longitude.value = point.x;
document.geoform.latitude.value = point.y;
}
}
);
}
}
//]]>
</script>
</head>
<body onload="load()">
<form action="#" name="geoform" id="geoform" onsubmit="showAddress(this.geolocation.value); return false">
<input type="hidden" name="geolocation" value="Address goes here, populated by cms" size="50" />
Decimal Longitude:
<input name="longitude" type="text" id="longitude" value="" />
Decimal Latitude:
<input name="latitude" type="text" id="latitude" value="" />
<input type="submit" value="Longitude/latitude codes" />
</form>
</body>
</html>
答案 0 :(得分:1)
当您提交表单时,提出对地址进行地理编码的请求为时已晚。 最好在页面加载上对地址进行地理编码,然后只需提交表单。
function load() {
if (GBrowserIsCompatible()) {
geocoder = new GClientGeocoder();
geocoder.getLatLng(
document.geoform.geolocation.value,
function(point) {
if (!point) {
alert(geolocation + " not found");
} else {
document.geoform.longitude.value = point.x;
document.geoform.latitude.value = point.y;
}
}
);
}
}
顺便提一下,有三个要点: