簡體   English   中英

搜索HashMap坐標

[英]Searching through HashMap coordinates

我正在開發一個GUI應用程序。 GUI由包含城市的地圖組成。 每個城市都有一個X和Y坐標。 城市存儲在HashMap中,如下所示:

cities.put(new Coordinates(X, Y), "City Name");

其中X和Y只是代表城市中點的一些整數。 如果您必須使用圓圈標記城市,則X和Y將代表該圓圈的中心。

獲取鼠標點擊的坐標沒有問題。 但是我的問題是我不知道如何搜索HashMap並獲得最近的城市。 沒有人能夠完美地點擊特定的X和特定的Y坐標。 所以我必須允許像+ - 15。

將地圖划分為網格,以便可以從網格中的點計算任何網格方塊的左上角坐標。

例如,如果地圖為100 x 100,並且您希望它包含10個網格方格和10個網格方格,則任何網格方格的左上角坐標將為:

top = y - y%10;
left = x - x%10;

然后,您的地圖將是:

Map<Coordinates, City>

其中City是一個包含City名稱和實際坐標的對象(不是網格坐標)。

如果要查找附近的城市,請計算所單擊位置的網格坐標,並將其用作地圖的關鍵點。

如果網格中有多個城市,則地圖的值必須是City對象的列表。

編輯:這也可以通過使用網格數學的類似原理對Coordinates類的hashcode和.equals()方法做一些詭計來解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM