我对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),并且看到了相同的行为(相同的多个图像链接)。
代码被截断:
<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>
问题:
答案 0 :(得分:1)
事实上,这是Google Maps JavaScript API的预期行为。该地图由多个图块图像组成,每个图块大小均为256x256像素。因此,API发出了多个请求,以对图像端点khms0.googleapis.com
和khms1.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:动态地图。
我希望我的回答能澄清您的疑问。