Javascript 基于地址数据在嵌入式开放街道地图上显示标记

Javascript 基于地址数据在嵌入式开放街道地图上显示标记,javascript,geocoding,openstreetmap,Javascript,Geocoding,Openstreetmap,目前,我提供的页面显示了一个带有标记的谷歌地图,该标记使用从我的数据库中检索到的地址。我目前使用一段相当简单的javascript代码通过地理编码添加该标记。我的js代码是由php动态生成的。除了使用地址搜索字符串初始化的“查询”定义外,所有定义都是静态的 我刚接触OSM,并做了一些研究,看看它是否能实现这一点。目前我不确定它能不能。我发现我需要使用几个类似OpenLayers的JSAPI 总而言之: 如何向OSM添加和显示单个标记,其中位置基于地址而不是纬度/长度对? 我目前基于谷歌的代码是:

目前,我提供的页面显示了一个带有标记的谷歌地图,该标记使用从我的数据库中检索到的地址。我目前使用一段相当简单的javascript代码通过地理编码添加该标记。我的js代码是由php动态生成的。除了使用地址搜索字符串初始化的“查询”定义外,所有定义都是静态的

我刚接触OSM,并做了一些研究,看看它是否能实现这一点。目前我不确定它能不能。我发现我需要使用几个类似OpenLayers的JSAPI

总而言之:

如何向OSM添加和显示单个标记,其中位置基于地址而不是纬度/长度对?

我目前基于谷歌的代码是:


var地理编码器;var映射;var标记;
var查询='Deutschland,Berlin,Platz der Republick 111011';
函数初始化()
{        
var companyLocation=new google.maps.LatLng(51.964577109947506,5.07568359375);
geocoder=新的google.maps.geocoder();
var latlng=新的google.maps.latlng(-34.397150.644);
var myOptions={zoom:11,center:latlng,mapTypeId:google.maps.mapTypeId.ROADMAP}
map=new google.maps.map(document.getElementById(“map_canvas”),myOptions);
代码地址();
}
函数代码地址()
{
var地址=查询;
geocoder.geocode({'address':address},函数(结果,状态){
if(status==google.maps.GeocoderStatus.OK){
map.setCenter(结果[0].geometry.location);
var marker=new google.maps.marker({
地图:地图,
位置:结果[0]。geometry.location,
标题:“联邦议院”,
标签内容:“,
labelAnchor:新的google.maps.Point(22,0),
labelClass:“labels”,//标签的CSS类
标签样式:{不透明度:0.75}
});        
}否则{
$('map_canvas').html(找不到地址);
}
});
}
请参见


不打算为您编写代码,但该wiki页面提供了有关如何调用Namingm地理编码服务的详细信息。

反向地理编码需要纬度/经度对,而不是地址输入。这不是所需要的,问题是关于这一点的具体问题。你提到的详细信息实际上非常少。它涵盖了普通的xml消息。不是如何发送,也不是如何显示结果。事实上,维基并没有解释任何必要的javascript编码。提名似乎是一条出路。对于使用JavaScriptAPI,这个站点上的文档比wiki有用得多:@Johan示例显示了XML结构,但是paramaters文档的第一部分描述了如何选择json。您将得到json而不是XML,具有相同的结构。然而,它根本不是一种学习资源。我不会向任何处于当前状态的人推荐它。它写得像rfc:可怕、困难,而且没有真实世界的例子。我发布的url是最常见用例的实际指南。请将url添加到答案中以供参考