Gmap.NetをWindowsフォームで使用しています。位置を受け取ったときにオブジェクトの軌跡を描きたいので、Routes
を使用します。ルートにポイントを追加すると、マップ上に線は表示されませんが、マップのズームを変更するとマップに表示されます。また、ルート(gMapControl1.Position = new PointLatLng(...)
)にポイントを追加した後にマップの位置を設定すると、正しく動作し、マップ上のルートラインが表示されます。私のコードは以下の通りです。Gmap.Netルートのポイント間に線がありません
void NewDataReceived(DeviceInfo deviceinf)
{
//---some codes
//----For the first time I add layer and route
if (deviceOverLay == null)
{
deviceOverLay = new GMapOverlay(deviceinf.DeviceId.ToString());
gMapControl1.Overlays.Add(deviceOverLay);
deviceRoute = new GMapRoute(new List<PointLatLng>(), deviceinf.DeviceName);
deviceOverLay.Routes.Add(deviceRoute);
//Add all your points here
deviceRoute.Points.Add(new PointLatLng(deviceinf.Latitude, deviceinf.Longitude));
deviceRoute.Tag = deviceinf;
}
else
{
deviceOverLay.Routes[0].Points.Add(new PointLatLng(deviceinf.Latitude, deviceinf.Longitude));
}
//if I call this line it works, but I don't want it
// gMapControl1.Position = new PointLatLng(deviceinf.Latitude, deviceinf.Longitude);
//---some codes
}
私はGMap.Netを一度も使ったことはありませんが、マップコントロールにポイントを直接追加している間はルートを更新しても地図コントロールがすぐに無効にならないようです。私はそれを描く前に全体のルートを構築したいかもしれないので、理にかなっています。 gMapControl.Invalidate()などを試してください。ズームを変更したときに表示されるということは、ポイントが追加されたことを意味します。 – cdkMoose
"cdkMoose"ありがとう、gMapControl.Invalidate()を試しましたが、解決しませんでした。 – SShR