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