2013-03-27 29 views
7

Tôi có bản đồ được vẽ bằng cách sử dụng leaflet.js. Nếu tôi cung cấp giá trị kinh độ và vĩ độ làm đầu vào Tôi có thể xác định đa giác không? Tôi có thể nhận được một kịch bản phía khách hàng cho điều này?xác định đó là đa giác từ vĩ độ và kinh độ

+0

bạn cần phải cung cấp giá trị lat và lng cho đa giác shape.if bạn đưa ra một lng lat giá trị nó sẽ represnt các dot.while cung cấp cho nhiều lat lng nó ll vẽ polygon.starting và kết thúc lat lng nên giống nhau. – tamilmani

+0

Có, hãy tìm một thuật toán trắc địa trắc địa (PIP). – pp19dd

+1

Tôi có một bản đồ được vẽ bằng cách sử dụng một số giá trị lat và lng. Nhưng bây giờ tôi muốn biết id đa giác từ một tập hợp giá trị lat và lng. – Sudha

Trả lời

5

Got một câu trả lời như sau:

// Đây là dựa vào 'điểm trong thuật toán đa giác'

function getPoint() { 
    float x=-89.82421875;  //x and y represents the lat and lng values 
    float y= 40.18307014852533; 
    var a = boundaries; //the coordinates used to draw the map 
    for (i = 0; i < a.features.length; i++) { 
     PointInPolygon(x,y, a.features[i].geometry.coordinates[0], i); 
    } 
}; 

function PointInPolygon(pointX, pointY, _vertices, number) { 
     var j = _vertices.length - 1; 
     var oddNodes = false; 
     var polyX, polyY,polyXJ,polyYJ; 

     for (var i = 0; i < _vertices.length; i++) { 
      polyY = parseFloat(_vertices[i].toString().split(",")[1]); 
      polyX = parseFloat(_vertices[i].toString().split(",")[0]); 
      polyXJ = parseFloat(_vertices[j].toString().split(",")[0]); 
      polyYJ = parseFloat(_vertices[j].toString().split(",")[1]); 
      if (polyY < pointY && polyYJ >= pointY || 
       polyYJ < pointY && polyY >= pointY) { 
       if (polyX + 
        (pointY - polyY)/(polyYJ - polyY) * (polyXJ - polyX) < pointX) 
       { 
        oddNodes = !oddNodes; 
       } 
      } 
      j = i; 
     } 
     if (oddNodes == true) { 
      map._layers[number+1].fire('click');    //fire the map click event 
     } 
    } 
Các vấn đề liên quan