Имитация моей текущей позиции - PullRequest
2 голосов
/ 21 ноября 2011

Как смоделировать мою позицию в моем приложении, как это делает GPS?Я хочу сделать это из Дополнительные инструменты -> Местоположение

Пример для использования на вашем эмуляторе:

private void button2_Click(object sender, RoutedEventArgs e)
{
   BingMapsDirectionsTask bingMapsDirectionsTask = new BingMapsDirectionsTask();

   // You can specify a label and a geocoordinate for the end point.
   // GeoCoordinate spaceNeedleLocation = new GeoCoordinate(47.6204,-122.3493);
   // LabeledMapLocation spaceNeedleLML = new LabeledMapLocation("Space Needle", spaceNeedleLocation);

   // If you set the geocoordinate parameter to null, the label parameter is used as a search term.
   LabeledMapLocation spaceNeedleLML = new LabeledMapLocation("Space Needle", null);


   bingMapsDirectionsTask.End = spaceNeedleLML;

   // If bingMapsDirectionsTask.Start is not set, the user's current location is used as the start point.

   bingMapsDirectionsTask.Show();
}

Ответы [ 2 ]

1 голос
/ 21 ноября 2011

Вам нужно GeoCoordinateWatcher для прослушивания GPS-координат. Позже, получая первую позицию, вы инициализируете LabeledMapLocation с координатами, заданными аргументами события, и запускаете задачу карты.

Пример:

(Сначала добавьте System.Device к ссылкам вашего проекта.)

GeoCoordinateWatcher watcher;

// this receives the current GPS position (or the simulated one in the emulator)
private void HandleGeoPositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
{
    // we only need one coordinate - stop watching
    watcher.Stop();

    // initialize task and location
    BingMapsDirectionsTask bingMapsDirectionsTask = new BingMapsDirectionsTask();
    GeoCoordinate spaceNeedleLocation = new GeoCoordinate(e.Position.Location.Latitude, e.Position.Location.Longitude);
    LabeledMapLocation spaceNeedleLML = new LabeledMapLocation("Space Needle", spaceNeedleLocation);
    bingMapsDirectionsTask.End = spaceNeedleLML;

    // If bingMapsDirectionsTask.Start is not set, the user's current location is used as the start point.

    bingMapsDirectionsTask.Show();
}

// this starts watching for GPS coordinates, the Bing task will be invoked later
// when we receive our first coordinate
private void button1_Click(object sender, RoutedEventArgs e)
{
    // prepare for coordinate watching
    watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.Default) { MovementThreshold = 10 };
    // register for position changes
    watcher.PositionChanged += HandleGeoPositionChanged;
    // start watching
    watcher.Start();
}

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

Вы также должны зарегистрироваться на watcher.StatusChanged. Это событие сообщает вам, например, когда GPS становится недоступным.

0 голосов
/ 22 ноября 2011

GeoCoordinateWatcher - правильный класс для отслеживания местоположения пользователей.Если вы хотите смоделировать перемещения пользователя в целях тестирования, вы можете использовать новые функции отслеживания местоположения в эмуляторе Mango.Вот отличная статья:

http://www.jeffblankenburg.com/2011/11/01/31-days-of-mango-day-1-the-new-windows-phone-emulator-tools/

Если вы хотите подделать местоположение пользователя во время выполнения, вы можете просто создать новый экземпляр класса GeoCoordinate и предоставить любые значения, которые вы хотитеШирота, Долгота, Высота и т. Д.

...