GoogleMap API为一张地图生成多个图像是否正常?

时间:2019-05-14 13:47:33

标签: google-maps google-chrome asp.net-core

我对GoogleMaps有一个特殊的问题...
我正在开发使用asp.net core 2.2的公共门户,并使用Google Map API(带有密钥)在某些页面上显示GoogleMap。
我使用坐标创建MAP(星期六),并设置一个以地址为标题的标记。
一切正常,正如您在(1)下面的屏幕截图中所看到的。
我现在也正在使用Google Chrom(开发环境)详细检查应用程序,从而看到了一种特殊的行为(至少对我而言)。
创建地图后,GC显示生成了两个动态条目:
khms0.googleapis.com(2) khms1.googleapis.com(3)
在两个条目下,均会生成指向图像(2.1)(3.1)的各种链接,从而生成了一些图像(例如(2.2))在原始位置(1)附近,但有些不在。 我使用GC调查了其他(外国)网页(使用Maps),并且看到了相同的行为(相同的多个图像链接)。

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 个答案:

答案 0 :(得分:1)

事实上,这是Google Maps JavaScript API的预期行为。该地图由多个图块图像组成,每个图块大小均为256x256像素。因此,API发出了多个请求,以对图像端点khms0.googleapis.comkhms1.googleapis.com进行平铺,以获取给定视口和缩放级别所需的平铺。我建议您看一下详细解释这些内容的地图图块坐标文档

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

每次更改缩放或平移地图时,API都会向图块图像端点发送新请求并接收新图块。

关于付款,Google Maps JavaScript API不会通过平铺图像或任何其他操作(如缩放,平移等)收取费用。付款基于地图负载。 Google将代码中的地图新实例创建为地图加载。换句话说,对于您的JavaScript代码中的每个new google.maps.Map(options)调用,他们都会向您收费。

在以下常见问题解答中,您可以找到有关地图加载的更多详细说明:

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

此外,在文档的“用法和计费”部分中对此进行了说明

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

如您所见,调用new google.maps.Map(options)后会产生SKU:动态地图。

我希望我的回答能澄清您的疑问。