2013-02-27 43 views
3

最近我一直盯着看,的OpenLayers & OpenStreetMap的工作點最近的位置。 我想要做的就是畫一條線&然後得到從那裏經度和緯度起點&終點最近的位置。 我能夠得到點波紋管的經度和緯度是它的腳本。如何獲得的OpenLayers OSM

<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

可以使用Overpass_API獲得該行的BBOX(可以緩衝區)所有位置。 如果您的線路太長,你可以緩衝(與OL)的線,並使用「通過多邊形」 -selection 現在你有一個(希望)小套,以找到就近。