GMUClusterManager處理相同經緯度的Marker時,出現的錯誤與解法

A-Tân
Jun 2, 2021

--

最近在做公司的App,用到iOS Google Map的SDK,因為公司的產品是跟房屋有關的,假設一棟房子中有好幾層樓的物件,都放在我們的App上,就會在地圖上出現經緯度完全一樣、完全重疊在一起的Marker。

而 iOS Goolge Map SDK 中,GMUClusterManager 預設的 GMUDefaultClusterRenderer有一個現象,是當地圖上相近的Marker大於4個點的時候,才會進行聚集的效果。

這時候出現一個嚴重的問題,就是假設同一個經緯度上有3個房源,也就是3個「1間房源」的Marker,而我們預期GMUClusterManager會幫我們把那3個集中在一起,變成一個呈現為「3間房源」的Marker,但因為上述Renderer的預設要4個才會聚集,因此就變成分散的3個「1間房源」的Marker完全重疊在地圖上。

當點擊那個「1間房源」的時候,理論上UI的邏輯是要讓那個Marker變深,但同時同個地點的另外兩個Marker都沒有變深,在地圖上就出現深、淺、深、淺…不停交互閃爍的錯誤效果,而且「1間」這個資料也是錯誤的。

(一開始不知道這個Bug是怎麼回事,苦苦抓了好幾天,最後才發現原來是Marker重疊在一起XDDD)

解決方法很簡單,參考Github上的這個Issue,原因就在GMUDefaultClusterRendererminimumClusterSize這個參數預設為4,只要把它改成2就好,大功告成!

--

--