как проложить расстояние с помощью Wi-Fi - PullRequest
3 голосов
/ 26 марта 2009

Я хочу найти расстояние с помощью Wi-Fi и нанести маркер на карту в iPhone.

Итак, какую-нибудь идею или код, который я могу получить для этого?

Ответы [ 7 ]

10 голосов
/ 26 марта 2009

При первом прочтении вашего вопроса я предположил, что вы имеете в виду расстояние до точки доступа. Написав кучу об этом, я понял, что вы можете иметь в виду что-то еще. Если это то, что вы имеете в виду, продолжайте читать ...

Учитывая вашу конфигурацию:

  • один фиксированный приемник (ваш телефон не нужно фиксировать, но он эффективно фиксируется, если вы ищете мгновенные измерения)
  • одна фиксированная базовая станция (точка доступа)
  • всенаправленная антенна на приемнике
  • Протокол 802.11 b / g

Этого нельзя сделать. Даже если вы работали на уровне PHY , эту проблему решить невозможно. Чтобы сделать его немного более выполнимым, вам необходимо триангулировать положение вашего приемника относительно двух (но предпочтительно более) базовых станций. Даже затем это все еще трудная проблема. РЧ волны распространяются со скоростью света, поэтому использование ретрансляционных методов для измерения задержки распространения сигнала в обоих направлениях не даст хорошей точности (приемники должны работать очень быстро, и тогда возникают проблемы многолучевое распространение ... ). Опять же, все это предполагает, что вы в основном строите свое собственное радиочастотное оборудование, что, очевидно, вы не собираетесь делать для iPhone.

Лучше всего отслеживать местоположение базовой станции, чтобы записать уровень сигнала WiFi при изменении положения телефона. С помощью «изменения позиции» вам, по сути, придется проходить по области. С некоторой хорошей эвристикой и надежностью, чтобы справляться с ухудшением сигнала, не связанного с расстоянием, вы можете достичь приличной точности (вероятно, порядка 10 метров).

2 голосов
/ 26 марта 2009

Невозможно получить точное расстояние (в метрах или футах) до точки доступа, просто используя уровень сигнала от вашей сетевой карты.

1 голос
/ 26 марта 2009

Здесь http://www.mathforum.com/library/drmath/view/51711.html вы можете найти уравнения для расчета расстояния между двумя точками с помощью GPS. Это код C #, который я создал (масштабируется до метрической системы)

    private double Distance(GpsPosition p1, GpsPosition p2)
    {
        // http://www.mathforum.com/library/drmath/view/51711.html

        double A = p1.Latitude / 57.29577951;
        double B = p1.Longitude / 57.29577951;
        double C = p2.Latitude / 57.29577951;
        double D = p2.Longitude / 57.29577951;

        if((A==C) && (B==D))
            return 0;

        if((Math.Sin(A)*Math.Sin(C)+Math.Cos(A)*Math.Cos(C)*Math.Cos(B-D)) > 1.0)
            return 6372.72 * Math.Acos(1);
        else
            return 6372.72 * Math.Acos(Math.Sin(A) * Math.Sin(C) + Math.Cos(A) * Math.Cos(C) * Math.Cos(B - D));
    }
1 голос
/ 26 марта 2009

Используйте каркас Apple CoreLocation, он может дать вам координаты вашего местоположения. Я не могу связаться с ним, поскольку у меня нет доступа к документации iPhone.

0 голосов
/ 26 марта 2009

Чего вы пытаетесь достичь здесь?

Если вы пытаетесь отобразить свое местоположение на карте с помощью Iphone, то эта функция уже является частью Iphone, которая имеет GPS-приемник и будет делать это «из коробки».

Если вы пытаетесь найти местоположение своего ноутбука с помощью Wi-Fi и отправить это местоположение на iphone, тогда у вас есть довольно сложная проблема, которую, вероятно, решить невозможно, если вы не потратите много времени.

Существуют средства, позволяющие вам триангулировать свое положение из мачт GSM, но они находятся в фиксированных положениях с известными широтами / долготами. Точки доступа Wi-Fi не имеют базы данных географических местоположений, поэтому их триангуляция будет очень трудной / невозможной.

Вы можете использовать сторонние сервисы, такие как this , чтобы отслеживать вашу позицию с помощью GSM, однако они крайне неточны, если вы не находитесь в большом городе и не потребует наличия GSM-модема, где бы вы ни находились. отслеживание.

0 голосов
/ 26 марта 2009

Используя полученную мощность, вы можете определить расстояние, используя радиочастотную модель распространения от излучателя до приемника. Однако звучит так, будто вам нужно местоположение, а не только расстояние.

Модель потерь пути в свободном пространстве:

http://en.wikipedia.org/wiki/Free-space_path_loss

0 голосов
/ 26 марта 2009

Возможно, вы сможете получить приблизительное расстояние, используя 3 или более точек доступа. Теперь существует методика определения расстояния до мобильного абонента с использованием 3 мобильных базовых станций GSM.

...