2015-02-05 4 views
0

У меня есть приложение с Bing Maps, и мне нужно нарисовать маршрут пользователя динамически. Теперь я могу отслеживать позицию пользователя с помощью кнопки. Есть ли способ рисовать маршрут?Нарисовать маршрут во время выполнения

UPDATE 1: Я использую этот обработчик, назначенный geolocator.positionChanged:

private void geolocator_DrawRoute(Geolocator sender, PositionChangedEventArgs args) 
    { 
     // Need to get back onto UI thread before updating location information 
     this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, new DispatchedHandler(
     () => 
     { 
      //Get the current location 
      Location location = new Location(args.Position.Coordinate.Point.Position.Latitude, 
       args.Position.Coordinate.Point.Position.Longitude); 
      _rotta.Add(location); 
      if (_rotta.Count > 1) 
      { 
       var polyline = new MapPolyline { Locations = _rotta, Color = Colors.Blue, Width = 3 }; 
       _shapeLayer.Shapes.Add(polyline); 
      } 

      //Update the position of the GPS pushpin 
      MapLayer.SetPosition(GpsPushpin, location); 

      //Update the map view to the current GPS location 
      MyMap.SetView(location, 18); 
     })); 
    } 

UPDATE 2:

private void geolocator_DrawRoute(Geolocator sender, PositionChangedEventArgs args) 
    { 
     // Need to get back onto UI thread before updating location information 
     Dispatcher.RunAsync(CoreDispatcherPriority.Normal, new DispatchedHandler(
     () => 
     { 
      //Get the current location 
      var location = new Location(args.Position.Coordinate.Point.Position.Latitude, args.Position.Coordinate.Point.Position.Longitude); 
      _rottaLoc.Add(location); 
      if (_rotta == null) 
      { 
       _rotta = new MapPolyline { Locations = _rottaLoc, Color = Colors.Blue, Width = 4 }; 
      } 
      else 
      { 
       _rotta.Locations = _rottaLoc; 
      } 

      _shapeLayer.Shapes.Add(_rotta); 

      //Update the position of the GPS pushpin 
      MapLayer.SetPosition(GpsPushpin, location); 

      //Update the map view to the current GPS location 
      MyMap.SetView(location, 18); 
     })); 
    } 
+0

Вы хотите нарисовать линию, когда пользователь перемещается по карте, т. Е. Отслеживает маршрут? или вы хотите провести маршрут и показать местоположение пользователей по этому маршруту? – rbrundritt

+0

@rbrunditt Я хочу нарисовать полилинию, которая следует за ходом пользователя! Можно ли использовать событие PositionChanged геолокатора? –

+0

Да, вы можете использовать событие PositionChanged – rbrundritt

ответ

0

Чтобы сделать это, первый шаг должен был бы получить позицию пользователей , Если вы используете JavaScript, вы можете использовать API геолокации, чтобы получить местоположение пользователей и контролировать их по мере их перемещения. Ниже приведена документация о том, как это сделать: http://www.html5rocks.com/en/tutorials/geolocation/trip_meter/

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

+0

Позиция пользователя постоянно захватывается. У меня есть кнопка СТАРТ и кнопка КОНЕЦ. Когда пользователь нажимает на начало, я начинаю рисовать трассировку до тех пор, пока пользователь не закроет ее. –

+0

Правильно, посмотрите на раздел местоположения пользователей монитора ссылки, которую я предоставил. – rbrundritt

+0

Этот код JavaScript, но я использую C# .. См. Update1 в первом сообщении. Может ли это сработать? –

Смежные вопросы