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

如何在openlayers OSM中获取点的最近位置,openlayers,openstreetmap,Openlayers,Openstreetmap,最近我开始使用openlayers和openstreetmap。 我想做的是画一条线,然后从那里得到最近的起点和终点的位置,经度和纬度。 我可以得到经度和纬度的点贝娄是它的脚本 <script type="text/javascript"> var map, layer; function init(){ var map = new OpenLayers.Map("map"); layer = new OpenL

最近我开始使用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);
  } 

var映射,层;
函数init(){
变量
map=新的OpenLayers.map(“map”);
layer=新的OpenLayers.layer.OSM(“简单OSM映射”);
//允许通过“?渲染器=画布”等测试特定渲染器
var renderer=OpenLayers.Util.getParameters(window.location.href).renderer;
renderer=(renderer)?[renderer]:OpenLayers.Layer.Vector.prototype.renderers;
var vectors=new OpenLayers.Layer.Vector(“向量层”{
渲染器:渲染器
});
向量,事件({
“功能选定”:功能(功能){
$('counter').innerHTML=this.selectedFeatures.length;
},
“功能未选择”:功能(功能){
$('counter').innerHTML=this.selectedFeatures.length;
}
});
addLayers([层,向量]);
line=新建OpenLayers.Control.DrawFeature(
向量,OpenLayers.Handler.Path
);
line.events.register('featureadded',line,handleMapClick);
map.addControl(行);
地图设置中心(
新OpenLayers.LonLat(-71.147,42.472).转换(
新OpenLayers.投影(“EPSG:4326”),
map.getProjectionObject()文件
), 15
); 
}
函数handleMapClick(evt)
{
//创建WKT读取器/解析器/编写器
var wkt=new OpenLayers.Format.wkt();
//以WKT格式写出要素的几何图形
var out=wkt.write(evt.feature);
警惕(出去);
} 
但是我无法获取最近的位置。

您可以使用获取行的BBox中的所有位置(您可以缓冲该位置)。 如果直线太长,则可以缓冲(使用OL)直线并使用“按多边形”选择 现在你有一个(希望)小集合来获得最近的