Номинатим с Openlayers

У меня есть простой код для отображения карты Openstreetmaps через Openlayers на основе широты / долготы:

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. Как мне указать карту на этот город?

2 ответа

Вы были почти там, посмотрите на страну, город и параметры формата:

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

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

Для этого вам нужен бюллетень, который представляет собой словарь, заполненный названиями мест и идентификаторами местоположений. Есть несколько способов использовать GeoNames для этой цели или другие GeoCoders. Вот пример для Openlayers и OSM, использующих OpenRouteService: http://openlayers.org/dev/examples/openls.html

Другие вопросы по тегам