目前,我使用从我的数据库中检索到的地址提供显示带有标记的Google地图的页面。我目前使用一段相当简单的javascript代码通过地理编码添加该标记。我的js代码是由php动态生成的。除了使用地址搜索字符串初始化的“查询”定义外,所有内容都是静态的。
我是OSM的新手并做了一些研究,看看它是否能实现这一目标。目前我不确定它能不能。我发现有几个js api就像OpenLayers,我需要使用它。
总结一下:
如何向OSM添加和显示单个标记,其位置基于地址而非纬度/经度对?
我目前基于谷歌的代码是:
<script>
var geocoder; var map; var marker;
var query = 'Deutschland, Berlin, Platz der Republik 1, 11011';
function initialize()
{
var companyLocation = new google.maps.LatLng(51.964577109947506, 5.07568359375);
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = { zoom: 11, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP }
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
codeAddress();
}
function codeAddress()
{
var address = query;
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
title: "Bundestag",
labelContent: "",
labelAnchor: new google.maps.Point(22, 0),
labelClass: "labels", // the CSS class for the label
labelStyle: {opacity: 0.75}
});
} else {
$('#map_canvas').html('<p style="margin: 15px">Address could not be found</p>');
}
});
}
</script>
答案 0 :(得分:0)
请参阅http://wiki.openstreetmap.org/wiki/Nominatim
不打算为您编写代码,但该Wiki页面包含有关如何调用Nominatim地理编码服务的详细信息。