2012-12-10 31 views
1

我有一个简单的代码来显示地图上通过的OpenLayers开放街道地图的基础上纬度/经度:nominatim用的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。我如何将地图指向该城市?

回答

0

为此,您需要一个Gazetteer,它基本上是一个填充了地名和位置标识符的字典。有几种方法可以将GeoNames用于此目的或其他GeoCoders。下面是的OpenLayers和OSM使用OpenRouteService一个例子:http://openlayers.org/dev/examples/openls.html

+0

难道就没有办法只需从这样的搜索获取纬度/经度:http://nominatim.openstreetmap.org/search.php?q=England+London ... afaik有一些方法可以得到响应作为JSON,也许有lat/lng包括在内? –