Вопрос

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

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

Это было полезно?

Решение

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

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

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

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

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

Другие советы

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

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

Здесь 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));
    }

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top