如何在openlayers OSM中获得最近的点位置

时间:2013-02-27 09:03:00

标签: openlayers openstreetmap

最近我盯着openlayers& OpenStreetMap的。 我想要做的是绘制一条线和一条线。然后得到起点的最近位置&从那里经度和纬度的终点。 我能够得到它的经度和纬度。它的脚本。

    <script type="text/javascript">
    var map, layer;
    function init(){
        var
        map = new OpenLayers.Map("map");
        layer = new OpenLayers.Layer.OSM( "Simple OSM Map");

        // allow testing of specific renderers via "?renderer=Canvas", etc
        var renderer = OpenLayers.Util.getParameters(window.location.href).renderer;
        renderer = (renderer) ? [renderer]:OpenLayers.Layer.Vector.prototype.renderers;

        var vectors = new OpenLayers.Layer.Vector("Vector Layer", {
            renderers: renderer
        });
        vectors.events.on({
            'featureselected': function(feature) {
                $('counter').innerHTML = this.selectedFeatures.length;
            },
            'featureunselected': function(feature) {
                $('counter').innerHTML = this.selectedFeatures.length;
            }
        });

        map.addLayers([layer, vectors]);

        line =  new OpenLayers.Control.DrawFeature(
                vectors, OpenLayers.Handler.Path
           );

       line.events.register('featureadded', line, handleMapClick);

        map.addControl(line);

         map.setCenter(
            new OpenLayers.LonLat(-71.147, 42.472).transform(
                new OpenLayers.Projection("EPSG:4326"),
                map.getProjectionObject()
            ), 15
        ); 
    }

  function handleMapClick(evt)
  {
  // create a WKT reader/parser/writer          
  var wkt = new OpenLayers.Format.WKT();

   // write out the feature's geometry in WKT format
   var out = wkt.write(evt.feature);
   alert(out);
  } 

但我无法到达最近的位置。

1 个答案:

答案 0 :(得分:1)

您可以使用Overpass_API获取该行的BBox中的所有位置(您可以缓冲该行)。 如果您的行太长,您可以缓冲(使用OL)该行并使用“By polygon” - 选择 现在你有一个(希望)小集来得到最近的。