我正在使用Openlayers和Openstreet地图创建基于地图的网站。单击地图并填写弹出窗体并添加图片。捕获lonlat并在该点上在地图上显示标记。目前,当您加载页面时,将从mysql数据库中获取所有条目(标记),并使用标记填充地图。我接下来想要发生的是每个标记存储的lonlat使用反向地理位置转换为实际的街道地址,并且当点击标记时,地址会出现在弹出窗口中。
我在这里发现了Mapquest / Nominatim和一个工作示例 -
但我无法弄清楚如何将其融入我的代码中。我在我的js文件中有一个功能 - ' downloadurl'它通过xml文件从服务器获取数据,并使用for循环用相关信息更新所有标记/弹出窗口。
downloadUrl("phpsqlajax_genxml3.php", function(data) {
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var item_name = markers[i].getAttribute("item_name");
var item_description = markers[i].getAttribute("item_description");
var item_condition = markers[i].getAttribute("item_condition");
var when_spotted = markers[i].getAttribute("when_spotted");
var time_spotted = markers[i].getAttribute("time_spotted");
var point = new OpenLayers.Geometry.Point(
parseFloat(markers[i].getAttribute("longitude")),
parseFloat(markers[i].getAttribute("latitude"))).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
var file = markers[i].getAttribute("file");
var html = "<b>" + item_name + "</b> <br/>" + item_description + "<br/>" + item_condition + "<br/>" + when_spotted + "<br/>" + time_spotted + "<br/>" + '<img src="'+file+'" style="height: 100px; width: 100px;">';
var size = new OpenLayers.Size(15,22);
var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
var icon = new OpenLayers.Icon('http://labs.google.com/ridefinder/images/mm_20_blue.png',size,offset);
var features = new OpenLayers.Feature.Vector(point,{
description: html
});
vector.addFeatures(features);
}
});
不知何故,我需要将反向地理位置代码放入此块中吗?或者从块中调用一个函数来执行它。任何人都可以提供有关如何做到这一点的任何建议吗?我无法找到一种方法来使上面的示例中的代码在我的代码的上下文中工作。对编码还有很多新东西需要学习。如果有人能提供任何指导,那么感激不尽。在来这里之前我也进行了广泛的搜索
由于