C # реализация карт Google google.maps.geometry.poly.containsLocation - PullRequest
0 голосов
/ 04 октября 2018

Я хочу проверить, находится ли место в пределах области в c #, но библиотека Google доступна только в виде примера кода javascript

var triangleCoords = [
{lat: 13.1356661, lng: 77.4975465},
{lat: 13.1156035, lng: 77.4082768},
{lat: 13.0085758, lng: 77.3808094},
{lat: 12.8713722, lng: 77.3931875},
{lat: 12.8385751, lng: 77.4714526},
{lat: 12.6805186, lng: 77.7337679},
{lat: 12.7247306, lng: 77.9260408},
{lat: 12.8050967, lng: 77.9411481},
{lat: 12.9416603, lng: 77.8683592},
{lat: 13.0848379, lng: 77.8532521},
{lat: 13.2413016, lng: 77.7887033},
{lat: 13.3001168, lng: 77.7351415},
{lat: 13.2680376, lng: 77.6774595},
{lat: 13.159739, lng: 77.5662156},
{lat: 13.1356661, lng: 77.4975465}
  ];
    var bermudaTriangle = new google.maps.Polygon({
    paths: triangleCoords,
    strokeColor: '#FF0000',
    strokeOpacity: 0.2,
    strokeWeight: 2,
    fillColor: '#00ff00',
    fillOpacity: 0
  });


  bermudaTriangle.setMap(map);
  google.maps.event.addListener(map, 'click', function(e) {
    var resultColor =
        google.maps.geometry.poly.containsLocation(e.latLng, bermudaTriangle) ?
        'black' :
        'green';

    if(google.maps.geometry.poly.containsLocation(e.latLng, bermudaTriangle)) {
      alert('inside the city');
    }

Ссылка на рабочий образец

Я не заинтересован в загрузке карты, я просто хочу иметь возможность проверить

1 Ответ

0 голосов
/ 25 апреля 2019

NetTopologySuite библиотека может быть использована для этого вопроса, вот пример, как определить, находится ли данная точка в многоугольнике:

var triangleCoords = new[] {
      new Coordinate(25.774, -80.19),
      new Coordinate(18.466, -66.118),
      new Coordinate(32.321, -64.757),
      new Coordinate(25.774, -80.19)
};
IGeometryFactory geometryFactory = new GeometryFactory();
var poly = geometryFactory.CreatePolygon(triangleCoords);


var locator = new NetTopologySuite.Algorithm.Locate.IndexedPointInAreaLocator(poly);
var location = locator.Locate(new Coordinate(24.886, -70.269));
if (location == GeoAPI.Geometries.Location.Interior)
{
     Console.WriteLine("Polygon contains the location");
}

Если вы предпочитаете отсутствие зависимости от другогобиблиотеки, затем этот ответ содержит реализацию C # алгоритма приведения лучей , который обычно используется для определения, находится ли точка внутри или снаружи многоугольника.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...