У меня проблема с отображением двух меток в одной точке координат. Проблема возникает, когда два разных объекта в массиве имеют одинаковые значения x и y. Все приложение представляет собой план завода, который показывает деятельность в разных местах завода и ставит «Маркер» с помощью координат объектов. Вы можете рассмотреть это на примере семьи, в которой все люди имеют разные характеристики, такие как возраст, рост, вес, цвет лица, но они по-прежнему живут в одном и том же месте или месте своего дома.
Код VB описывает эту проблему как:
For Index_i = 0 To myTotalFiles - 1
For Index_j = 0 To TotalLine - 1
If (Worker(Index_i).Location = MapLocations(Index_j).NameOfLocation) Then
Worker(Index_i).X = MapLocations(Index_j).XCoord
Worker(Index_i).Y = MapLocations(Index_j).YCoord
series.Points.AddXY(Worker(Index_i).X, Worker(Index_i).Y)
End If
Next
Next
MapLocations () - это массив объектов, содержащий три свойства: NameOfLocation, XCoord и YCoord.
Line Worker (Index_i) .Location = MapLocations (Index_j) .NameOfLocation Сравнивает местоположение рабочего (String) с местоположением MapLocation MapLocations (Index_j). NameOfLocation (String), если оно совпадает, дает рабочему пару координат как
Worker(Index_i).X = MapLocations(Index_j).XCoord
Worker(Index_i).Y = MapLocations(Index_j).YCoord
и добавьте маркер на график.
В диаграмме также реализовано отображение сообщения или всплывающей подсказки при нажатии на маркер. Если два рабочих процесса имеют одинаковые значения x и y, тогда маркеры будут точно перекрываться и не будут давать информацию для них обоих. Как этого можно избежать.
Событие щелчка на графике представлено как:
Private Sub Chart1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Chart1.Click
Try
Dim pointindex As Integer
Dim result As HitTestResult
result = Chart1.HitTest(Cursor.Position.X, Cursor.Position.Y)
If result.ChartElementType = ChartElementType.DataPoint Then
pointindex = result.PointIndex
MsgBox("Worker is working at: " + Worker(pointindex).Location + vbLf+ "With Scope of work: " + Worker(pointindex).Scope)
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub