我有一个城镇名称、gmap 模块和 plg。我想通过输入城镇名称而不是经度和纬度来在 gmap 中聚焦所需位置。在 Joomla 1.5.x 中有什么方法可以做到这一点。
在此先感谢
纳文
我有一个城镇名称、gmap 模块和 plg。我想通过输入城镇名称而不是经度和纬度来在 gmap 中聚焦所需位置。在 Joomla 1.5.x 中有什么方法可以做到这一点。
在此先感谢
纳文
您将需要一个地理编码器来根据城市名称获取位置。对 Joomla 一无所知,但这里是使用 JavaScript 的示例。
<div id='myMap' style="position:relative; width:740px; height:400px;"></div>
您必须填写 Google API Key 和您想要的城市
<script src="http://maps.google.com/maps?file=api&v=2.x&key=XXXXX">
</script>
<script type="text/javascript">
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function')
{ window.onload = func; }
else {
window.onload = function()
{ oldonload(); func(); }
}
}
var map = null;
var geocoder = null;
addLoadEvent(initialize);
function initialize() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("myMap"));
map.setCenter(new GLatLng(-12.08, -53.08), 4);
map.addControl(new GSmallMapControl());
map.addControl(new GOverviewMapControl());
geocoder = new GClientGeocoder();
showAddress('YourCity, YourCountry');
}
}
function showAddress(address) {
if (geocoder) {
geocoder.getLatLng(
address,
function(point) {
if (!point) {
$("#myMap").hide();
} else {
map.setCenter(point, 8);
var marker = new GMarker(point);
map.addOverlay(marker);
marker.openInfoWindowHtml(address);
}
}
);
}
}
</script>
您可以从 Javascript 向 Google 的地理编码服务发起 HTTP 调用,将地名/邮政编码传递给它,然后返回 lat/long。
我使用 CSV 选项执行此操作,因为我从 ASP 调用它,但我认为您也可以取回 XML 或 JSON。
如果您有 Google 地图 API 密钥,请关闭此 URL: http ://maps.google.com/maps/geo?gl=uk&q=guildford,+uk&output=csv&key=XXXXXXXXXXXX
返回的第一个参数是响应代码。200代表成功。然后你得到纬度和经度,逗号分隔。
我正在寻找一种自己做类似事情的方法。我尝试使用 Google Maps API 搜索位置,但有时会出错。最终我查询了与城镇相关的维基百科页面并解析了坐标,然后使用了这些。可能不是您正在寻找的解决方案,但它对我有用。我建议先尝试搜索 Maps API 作为 Eduardo 的详细信息,但如果这不起作用,则可能会这样做。