Это нормально, что API GoogleMap генерирует несколько изображений для одной карты? - PullRequest
1 голос
/ 14 мая 2019

У меня есть специальный вопрос к GoogleMaps ...
Я нахожусь на пути разработки общедоступного портала с ядром asp.net 2.2 и использования API Карт Google (с ключом) для отображения GoogleMaps на некоторых страницах.
Я создаю MAP (Sat) с координатами и устанавливаю маркер с адресом в качестве заголовка.
Все работает правильно, как вы можете видеть на скриншоте ниже (1) .
Сейчас я нахожусь на пути к детальной проверке приложения также с помощью Google Chrom (среда разработки) и, таким образом, наблюдаю особое (по крайней мере для меня) поведение.
После создания карты GC показывает, что были сгенерированы две динамические записи:
khms0.googleapis.com (2) и khms1.googleapis.com (3)
В обеих записях различные ссылки на изображения (2.1) и (3.1) , где они сгенерированы, в результате чего некоторые изображения (например, (2.2) ) находятся рядом с исходное местоположение (1) но некоторые нет. Я исследовал некоторые другие (иностранные) веб-страницы (с помощью Карт) с помощью GC и видел такое же поведение (те же ссылки на несколько изображений).

Screenshot Google Chrome

Отрезанный код:

  <script type="text/javascript">
        function GMEinfuegen() {
        var address = "@Model.cPAB_Strasse" + "," + "@Model.cPAB_PLZ" + " " + "@Model.cPAB_Ort"
        var addressTitle =  "@Html.Raw(@Model.cPAB_Firma)" + ", "  +   "@Html.Raw(@Model.cPAB_Strasse)" + ", " + "@Html.Raw(@Model.cPAB_PLZ)" + " " + "@Html.Raw(@Model.cPAB_Ort)"
        //
        var cLatituede = @Model.cPAB_Latituede
        var cLongituede = @Model.cPAB_Longituede
            function initMap() {
                @{ var tagname1 = "#map" + Model.PBA_Kundennummer;}
                var map = new google.maps.Map($("@tagname1")[0], {
                    zoom: 15,
                    center: { lat: cLatituede, lng: cLongituede }, 
                    mapTypeId: google.maps.MapTypeId.HYBRID,
                });
                var marker1 = new google.maps.Marker({
                    map: map,
                    draggable: false, 
                    title: addressTitle,
                    animation: google.maps.Animation.DROP,
                    position: { lat: cLatituede, lng: cLongituede }
                });
            }
        initMap()
        } 
</script>

Вопросы:

  • Это нормальное поведение?
  • Может кто-нибудь объяснить причину дальнейших изображений?
  • Со временем вызовы API должны быть оплачены Google (если сумма бесплатного перевода превысила) - я думаю (надеюсь), дополнительные сгенерированные изображения не считаются вызовом API?

1 Ответ

1 голос
/ 15 мая 2019

Ссылаясь на ваши вопросы, действительно, это ожидаемое поведение Google Maps JavaScript API. Карта состоит из нескольких мозаичных изображений, каждое размером 256х256 пикселей. Таким образом, API делает несколько запросов к конечным точкам изображений мозаичного изображения khms0.googleapis.com и khms1.googleapis.com, чтобы получить плитки, необходимые для заданного области просмотра и уровня масштабирования. Я бы посоветовал взглянуть на документацию по координатам фрагментов карты, которая подробно объясняет это

https://developers.google.com/maps/documentation/javascript/coordinates

Каждый раз, когда вы изменяете масштабирование или панорамирование карты, API отправляет новые запросы конечным точкам изображений мозаики и получает новые плитки.

Что касается оплаты, JavaScript API Карт Google не взимается за изображения мозаики или любые другие операции, такие как масштабирование, панорамирование и т. Д. Оплата основана на загрузках карты. Google понимает под загрузкой карты создание нового экземпляра карты в вашем коде. Другими словами, они взимают плату за каждый new google.maps.Map(options) звонок в вашем коде JavaScript.

В следующем разделе часто задаваемых вопросов вы можете найти более подробное объяснение относительно загрузки карты:

https://developers.google.com/maps/faq#usage_mapload

Также это объясняется в разделе «Использование и выставление счетов» документации

https://developers.google.com/maps/documentation/javascript/usage-and-billing#dynamic-maps

Как вы можете видеть, SKU: Динамическая карта возникает после вызова new google.maps.Map(options).

Надеюсь, мой ответ прояснит ваши сомнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...