2012-12-10 37 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包括在內? –