Я вроде понял, что происходит. Несмотря на то, что до сих пор неясно, почему это происходит, я знаю, что мне пришлось создать экземпляр переменной «overlay» сразу после создания моей карты Google (HAR.map). Поэтому я практически переместил этот фрагмент кода в свой класс HAR и теперь использую:
HAR.canvassOverlay.getProjection().fromLatLngToContainerPixel( recBounds.getCenter() );
Так что теперь, каждый раз, когда я создаю карту через мой класс "HAR", у меня также есть параллельный объект OverlayView внутри моего класса.
Ошибка могла быть связана с потерей области видимости моего объекта класса, но я думаю, что это было больше из-за того, что событие карты «projection_changed» не было запущено. Я получил подсказку из документации API карты для класса карты в методе getProjection ():
" Возвращает текущую проекцию. Если карта еще не инициализирована (т. Е. MapType все еще равен нулю), то результат равен нулю. Прослушайте projection_changed и проверьте его значение, чтобы убедиться, что оно не равно нулю. «
Если вы получаете подобную проблему, убедитесь, что вы присваиваете свой overlayView.setMAP (YOUR_MAP_OBJECT) близко после создания экземпляра объекта карты.