2017-02-14 24 views
0

Мне нужно обновить маркеры GMap.NET на C#. я добавил свои маркеры, как показано ниже:Обновление маркеров GMap.NET в C#

GMap.NET.WindowsForms.GMapMarker marker2 = 
       new GMap.NET.WindowsForms.Markers.GMarkerGoogle(
        new GMap.NET.PointLatLng(39.81750, 30.52686), 
        new Bitmap("hello.png")); 
      marker2.ToolTipText = "Hello"; 
      marker2.ToolTip.Fill = Brushes.Black; 
      marker2.ToolTip.Foreground = Brushes.White; 
      marker2.ToolTip.Stroke = Pens.Black; 
      markers.Markers.Add(marker2); 
      gMapControl1.Overlays.Add(markers); 

Я хочу обновить позицию этого маркера в таймере. Как я могу изменить эту переменную в потоке таймера? Нужно ли делать эти маркеры глобальными переменными? Спасибо за ответы.

ответ

0

Вам нужно будет пройти накладку в таймер:

System.Timers.Timer t = new System.Timers.Timer(); 
GMapOverlay overlay_ = new GMapOverlay(); 
//do stuff to your overlay 
t.Elapsed += (sender, e) => MyElapsedMethod(sender, e, overlay_); 

Ваши накладками все ссылки, так что вы можете просто обновить маркеры, и он должен обновить на карте (если вы добавили его в gmapcontrol):

static void MyElapsedMethod(object sender, System.Timers.ElapsedEventArgs e, GMapOverlay overlay) 
{ 
    overlay.Markers[..].Position = new PointLatLng(0,0); //for your new position 
} 

Я не тестировал этот код, но у меня есть хороший успех, делая что-то подобное, используя фона рабочего.

+0

OK. И как я могу изменить переменные маркеров в том же контексте выше кода? –

+0

Я хочу, чтобы иметь возможность вызывать маркеры в качестве переменной и изменять их. Я объявляю их выше, но не могу донести их до переменной. У меня мало знаний в C#. Извините за мой вопрос. –

+0

Вам нужно будет заполнить «Список» маркеров, вы можете использовать свойство «Tag», чтобы разделить их, просто передайте ему уникальный произвольный идентификатор. Затем отфильтруйте список маркеров для этого идентификатора и обновите позицию. IMO вам не нужно передавать список или наложение на таймер, просто удерживайте их в поле. – rdoubleui