我只想标记给定LatLog中的所有医院。我尝试了很多。但是找不到我的错误。
var lat = 12.933;
var lon = 77.612;
var zoom = 13;
var map;
function init() {
map = new OpenLayers.Map("demoMap", {
controls: [
new OpenLayers.Control.Navigation(),
new OpenLayers.Control.PanZoomBar(),
new OpenLayers.Control.LayerSwitcher(),
new OpenLayers.Control.Attribution()
],
maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34),
maxResolution: 156543.0399,
numZoomLevels: 19,
units: 'm',
projection: new OpenLayers.Projection("EPSG:900913"),
displayProjection: new OpenLayers.Projection("EPSG:4326")
});
layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik");
map.addLayer(layerMapnik);
var lonLat = new OpenLayers.LonLat(lon, lat)
.transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913"));
map.setCenter(lonLat, zoom);
map.addLayers([
make_layer("http://overpass-api.de/api/interpreter?data=node[amenity=hospital];out+skel;", "red")
]);
}
它没有显示任何结果。这是因为查询错误还是其他任何问题?
答案 0 :(得分:0)
您忘记了(bbox)
将数据限制在当前边界框中。当您查询整个星球的数据时,查询很可能会因超时或内存不足而终止。
有关如何添加(bbox)
:http://overpass-api.de/open_layers_mashup.html
在您自己的代码中嵌入任何Overpass查询之前,请务必先通过http://overpass-turbo.eu/运行它。语法可能略有不同,但它有助于评估结果,而无需事先进行任何编码。