Query the OSM data using Node.js

不问归期 提交于 2019-12-12 03:47:36

问题


Here I'm trying to query the hospitals from osm database using overpass and openlayer by the following code

<script src="http://openlayers.org/api/2.11/OpenLayers.js"></script>
<script src="http://openstreetmap.org/openlayers/OpenStreetMap.js"></script>
<script src="http://overpass-api.de/overpass.js"></script>
<script>
    var lat = 8.4967;
    var lon = 76.9493;
    var zoom = 15;
    var data_url = "http://overpass-api.de/api/interpreter?data=node[amenity=%22hospital%22];out+skel;";
    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);

        var styleMap = new OpenLayers.StyleMap({
            strokeColor: "blue",
            strokeOpacity: 0.5,
            strokeWidth: 6,
            pointRadius: 10,
            fillColor: "blue",
            fillOpacity: 0.25
        });
        var layer = new OpenLayers.Layer.Vector("Polygon", {
            strategies: [new OpenLayers.Strategy.Fixed()],
            protocol: new OpenLayers.Protocol.HTTP({
                url: data_url,
                format: new OpenLayers.Format.OSM()
            }),
            styleMap: styleMap,
            projection: new OpenLayers.Projection("EPSG:4326")
        });

        map.addLayers([layer]);
    }

</script>

But no hospitals getting marked as seen in the map image. But trying http://overpass-turbo.eu/s/gj0 in the turbo is working fine.

来源:https://stackoverflow.com/questions/37314371/query-the-osm-data-using-node-js

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!