Вот несколько возможных причин:
1. Оператор может менять структуру сети. Таким образом, ID станций могут со временем меняться, а гео-базы обновляются с задержкой.
2. Не исключено, что библиотеки учитывают не все
ID-параметры (MCC, MNC, LAC, CellID, BSID). Соответственно, возможна неоднозначность.
а если точность координат влияет на что либо?
Значит, придётся учитывать возвращаемую
оценку точности, если система позиционирования такое поддерживает.
GeoLocation gl = gs.GSM2Geo(ct);
…
if (gl != null)
Это условие всегда выполняется. Если
gl
было
null
, то в строке
ll.Latitude = gl.Latitude;
вылетел NullPointerException, и до
if
'а дело не дошло.