Нашол иное решение через JS.Выдает ошибку к двум двоеточием координат х,у при запуске скрипта . И возможно будет в массив points загнать таблицу значений з координатами широты и долготы, и как правильно передать в функцию isPointInPoly, координату на проверку.Подскажите возможно ли такое ришение?
Скрипт= СоздатьОбъект("MSScriptControl.ScriptControl");
Скрипт.language="javascript";
Скрипт.AddCode("
|function isPointInPoly(poly, pt){
|for(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i)
|((poly[i].y <= pt.y && pt.y < poly[j].y) || (poly[j].y <= pt.y && pt.y < poly[i].y))
|&& (pt.x < (poly[j].x - poly[i].x) * (pt.y - poly[i].y) / (poly[j].y - poly[i].y) + poly[i].x)
|&& (c = !c);
|return c;
|}
|points = [
|{x: 0, y: 0},
|{x: 0, y: 50},
|{x: 50, y: 10},
|{x: -50, y: -10},
|{x: 0, y: -50},
|{x: 0, y: 0}
|];
|");
Текст=СокрЛП(Скрипт.Run("isPointInPoly(points, {x: 10, y: 10})"));
Нашол иное решение через JS.Выдает ошибку к двум двоеточием координат х,у при запуске скрипта . И возможно будет в массив points загнать таблицу значений з координатами широты и долготы, и как правильно передать в функцию isPointInPoly, координату на проверку.Подскажите возможно ли такое ришение?
Скрипт= СоздатьОбъект("MSScriptControl.ScriptControl");
Скрипт.language="javascript";
Скрипт.AddCode("
|function isPointInPoly(poly, pt){
|for(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i)
|((poly[i].y <= pt.y && pt.y < poly[j].y) || (poly[j].y <= pt.y && pt.y < poly[i].y))
|&& (pt.x < (poly[j].x - poly[i].x) * (pt.y - poly[i].y) / (poly[j].y - poly[i].y) + poly[i].x)
|&& (c = !c);
|return c;
|}
|points = [
|{x: 0, y: 0},
|{x: 0, y: 50},
|{x: 50, y: 10},
|{x: -50, y: -10},
|{x: 0, y: -50},
|{x: 0, y: 0}
|];
|");
Текст=СокрЛП(Скрипт.Run("isPointInPoly(points, {x: 10, y: 10})"));
Цитата(faiden @ 30.05.12, 22:53) необходимо зарегистрироваться для просмотра ссылки
Если черту города аппроксимировать как окружность, то приводить все нужно к формуле круга: R
2 >= X
2 + Y
2. В данном случае R - максимальное расстояние от центра города до окраины, грубо говоря, "радиус" города (поскольку город мы аппроксимируем окружностью). Пусть у нас Х1 и Y1 - соответственно долгота и широта координаты центра города, X2 и Y2 - долгота и широта координаты транспортного средства. Тогда, если выполняется условие (Х2-X1)
2 + (Y2-Y1)
2 <= R
2, тогда транспортное средство в черте города, если нет - тогда за пределами.
Если же черту города аппроксимировать как прямоугольник с координатами X1Y1/Х2Y2, где X1Y1 - координаты "левого нижнего" угла, а Х2Y2 - координаты "правого верхнего" угла города, а координата транспортного средства X3Y3, тогда проверка еще проще:
Если (X1 <= X3 ) и (X3 <= X2) и (Y1 <= Y3) и (Y3 <= Y2) Тогда
Cообщить("транспортное средство в черте города.");
КонецЕсли
В моем случаи не выйдет,мне нежно контролировать скорость передвижения, насколько я понял,а если транспортное средство будет на окраине но приделах города,и за приделами города.То что за приделами мне ненужно