2

我有一个简单的代码来通过基于纬度/经度的 Openlayers 显示 Openstreetmaps 的地图:

map = new OpenLayers.Map('#map');
var mapnik         = new OpenLayers.Layer.OSM();
var fromProjection = new OpenLayers.Projection("EPSG:4326");   // Transform from WGS 1984
var toProjection   = new OpenLayers.Projection("EPSG:900913"); // to Spherical Mercator Projection
var position = new OpenLayers.LonLat(geo.lng,geo.lat).transform( fromProjection, toProjection);
var zoom = 14; 

map.addLayer(mapnik);
map.setCenter(position, zoom);

var markers = new OpenLayers.Layer.Markers( "Markers" );        
markers.addMarker(new OpenLayers.Marker(position));
map.addLayer(markers);

我现在想做的是显示一张不基于纬度/经度的地图,而只是显示一个地址,也许是通过 OpenStreetMap nominatim。所以我有上面的代码和一个地址字符串,例如“国家、州、城市”,没有街道/-nr。我如何将地图指向那个城市?

4

2 回答 2

2

你快到了,看看国家、城市和格式参数:

http://nominatim.openstreetmap.org/search.php?country=England&city=London&format=json

http://wiki.openstreetmap.org/wiki/Nominatim

于 2012-12-10T20:48:12.960 回答
0

为此,您需要一个地名词典,它基本上是一个充满地名和位置标识符的字典。有几种方法可以为此目的使用GeoNames或其他 GeoCoders。这是使用OpenRouteService的 Openlayers 和 OSM 示例: http : //openlayers.org/dev/examples/openls.html

于 2012-12-10T13:21:42.773 回答