Пользовательский маркер отсутствует ... иногда - PullRequest
1 голос
/ 30 октября 2019

Мы используем API статических карт Google, и все шло хорошо, когда неожиданно начался сбой с нашим значком маркера. Иногда он отображается так, как задумано, иногда мы получаем маркер по умолчанию и желтый баннер в верхнем правом углу, в котором говорится: «Ошибка карты: g.co/staticmaperror".

map error banner

Взглянув на заголовки, мы обнаружили, что у Google, похоже, возникают проблемы с загрузкой нашего маркера:

x-staticmap-api-warning: Failed to fetch image url https://www.xyz.de/some_image.png

Я могу выполнить один и тот же запрос n раз и получить немного <= n хороших ответов и некоторые o <= n запросов, которые имеют вышеупомянутую проблему. Мне кажется, что у Google есть некоторые проблемы с кэшированием изображения. <br>У меня нет проблем с запросом изображения маркера с наших серверов. Нет правил брандмауэра, которые запускаются. Изображение маркера имеет высокий cache-control max-age и штраф etag, это expires через две недели. В этом нет ничего фантастического.

Запрос карт выглядит следующим образом:

https://maps.googleapis.com/maps/api/staticmap?key=<OUR_KEY>&size=260x130&maptype=roadmap&format=png&visual_refresh=true&zoom=10&markers=icon:https://www.xyz.de/some_image.png|52.52008961%2C13.40465566&signature=<SIG>

Здесь тоже ничего необычного.

Поскольку SO, кажется, теперь является официальной поддержкой Google,может, какой-нибудь техник Google поможет?

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

Как оказалось, наш брандмауэр приложения фактически заблокировал некоторые запросы от Google, и мы должны добавить еще несколько правил. (Хотя мы думаем, что уже проверяли это дважды.)

К сожалению, для картографических сервисов нет фиксированного диапазона IP-адресов. Но позвольте мне поделиться с вами тем, что мне сказала поддержка:


Поддержка Google Cloud

Невозможно предоставить конкретный список IP-адресов, которые должны быть доступны вЧтобы использовать API-интерфейсы Карт, поскольку службы Google не привязаны к конкретным хостам или IP-адресам в наших центрах обработки данных.

Службы переносятся между центрами обработки данных в зависимости от нагрузки, графиков обслуживания и роста. Конкретный центр обработки данных, на который направляется конкретный запрос, зависит от географического местоположения пользователя, местоположения в сети и относительной нагрузки на близлежащие центры обработки данных, в которых в настоящее время размещается соответствующая услуга, и от сетевых ссылок, которые их соединяют.

Если вам нужно добавить правила брандмауэра на основе IP-адреса, единственный вариант - внести в белый список распределение всей сети Google, которое можно получить с помощью следующей команды из системы Unix:

$ dig +short _spf.google.com txt

ответ будет содержать текст, такой как:

"v=spf1 include:_netblocks.google.com include:_netblocks2.google.com include:_netblocks3.google.com ~all"

Обязательно следуйте инструкциям для всех сетевых блоков, например:

$ dig +short _netblocks.google.com txt

$ dig +short _netblocks2.google.com txt

$ dig +short _netblocks3.google.com txt

ОтветВ разделе перечислены все блоки IP-адресов в нотации CIDR.

Этот список меняется несколько раз в год по мере добавления и удаления серверов, и вы несете ответственность за отслеживание этих изменений и соответственно обновление брандмауэра. (Мы рекомендуем делать это каждый квартал).

В целом, гораздо проще установить правила брандмауэра на основе списка имен хостов, используемых API Карт, который является более стабильным. Эта информация доступна в разделе Ресурсы портала поддержки предприятия. Если вы вошли на портал, вы можете перейти по ссылке ниже.


Еще один способ исправить - это сделать исключение для этого статического ресурса (значок маркера).

0 голосов
/ 02 ноября 2019

Похоже, что на вас повлияла эта проблема , о которой было сообщено в системе отслеживания проблем Google около месяца назад и с тех пор исправлена.

Если вы все еще получаете это, "не удалосьвремя от времени извлекайте "URL-адрес изображения", хотя я рекомендую вам прокомментировать эту ошибку, чтобы технические специалисты Google могли рассмотреть эту проблему со своей стороны.

Надеюсь, это поможет!

...