По аналогии с визуализацией массива маркеров, нанёс на карту сектора.
Для того, чтобы различать сектора разных диапазонов используем разную длину и толщину линий, символизирующих эти сектора. Например, для диапазона 900 задаем длину линии 0.25 км и толщину 1; для диапазона 1800 - 0.125 км, толщина 3.
GMapOverlay sectors = new GMapOverlay("sectors");
GMapRoute[] sector = new GMapRoute[10000];
int i = 0;
while (dataReader.Read())
{
double Lat = Convert.ToDouble(dataReader["LATITUDE"]);
double Lon = Convert.ToDouble(dataReader["LONGITUDE"]);
double Azimuth = Convert.ToDouble(dataReader["AZIMUTH"]);
double Band = Convert.ToInt32(dataReader["BAND"]);
double GsmCellLen = 0;
int SectorThickness = 0;
if (Band == 900)
{
GsmCellLen = 0.25;
SectorThickness = 1;
}
else { GsmCellLen = 0.125; SectorThickness = 3; }
double LenLon1Degree = Convert.ToInt32((6400 * Math.Cos(Lat * Math.PI / 180) * Math.PI * 1) / 180);
double LatServCell = Lat + (GsmCellLen * Math.Cos(Azimuth * Math.PI / 180)) / 111;
double LonServCell = Lon + (GsmCellLen * Math.Sin(Azimuth * Math.PI / 180)) / LenLon1Degree;
List points = new
{
new PointLatLng(Lat, Lon),
new PointLatLng(LatServCell, LonServCell)
};
sector[i] = new GMapRoute(points, Convert.ToString(dataReader["CELL"]))
{
Stroke = new Pen(Color.Blue, SectorThickness)
};
sectors.Routes.Add(sector[i]);
i++;
}
gmap.Overlays.Add(sectors);
Комментариев нет:
Отправить комментарий