Как узнать выбранная точка относиться к суши или воде? OSM JS openlayers

141
21 июля 2019, 22:00

Как написать функцию на JS которой на вход передаёшь широту и долготу, а на выходе получаешь false, если суша и true, если вода. У меня есть такой JS:

<!DOCTYPE html>
<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="http://www.openlayers.org/api/OpenLayers.js"></script>
    <script>
        var map,vectorLayer,selectMarkerControl,selectedFeature;
        var lon = 30.315868;
        var lat  = 59.939095;
        var zoom = 5;
        var curpos = new Array();
        var position;
        var fromProjection = new OpenLayers.Projection("EPSG:4326"); // Transform from WGS 1984
        var toProjection = new OpenLayers.Projection("EPSG:900913"); // to Spherical Mercator Projection
        var cntrposition = new OpenLayers.LonLat(lon, lat).transform(fromProjection, toProjection);
        function init()
        {
            map = new OpenLayers.Map("Map",{
                                    controls:
                                    [
                                        new OpenLayers.Control.PanZoomBar(),
                                        new OpenLayers.Control.LayerSwitcher({}),
                                        new OpenLayers.Control.ScaleLine(),
                                        new OpenLayers.Control.OverviewMap(),
                                        new OpenLayers.Control.Navigation()
                                    ]});
            var mapnik      = new OpenLayers.Layer.OSM("MAP");
            var markers     = new OpenLayers.Layer.Markers("Markers");
            map.addLayers([mapnik,markers]);
            map.addLayer(mapnik);
            map.setCenter(cntrposition, zoom);
            markers.addMarker(new OpenLayers.Marker(cntrposition));
            var click = new OpenLayers.Control.Click();
            map.addControl(click);
            click.activate();
           };
            OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, {
                    defaultHandlerOptions: {
                            'single': true,
                            'double': false,
                            'pixelTolerance': 0,
                            'stopSingle': false,
                            'stopDouble': false
                    },
                    initialize: function(options) {
                        this.handlerOptions = OpenLayers.Util.extend( {}, this.defaultHandlerOptions );
                        OpenLayers.Control.prototype.initialize.apply( this, arguments );
                        this.handler = new OpenLayers.Handler.Click(
                            this, { 'click': this.trigger }, this.handlerOptions ); },
                        trigger: function(e) {
                        var lonlat = map.getLonLatFromPixel(e.xy);
                        lonlat1= new OpenLayers.LonLat(lonlat.lon,lonlat.lat).transform(toProjection,fromProjection);
            }});
        </script>
       <style type="text/css">
            body,html {
                height: 100%;
            }
            html {
                overflow-y: hidden;
            }
            #output {
                width: 100%;
                height: 13%;
            }
            #Map{
                width: 100%;
                height: 80%;
            }
            .inp{
               display:  flex;
               height: 3%;
            }
        </style>
    </head>
    <body onload='init();'>
        <div id="Map" ></div>
    </body>
</html>

Нашёл информацию про Key:water, но не совсем понимаю как этим ключём пользоваться.

READ ALSO
Поиск на сайте по двум параметрам

Поиск на сайте по двум параметрам

Доброго времени суток :) Помогите пожалуйста с небольшой задачкой

154
Как сделать AJAX запрос?

Как сделать AJAX запрос?

Много всего прочитал о AJAX запросах и как они работают вроде бы понял, но как это применить никак не догадаюсь

150