我试图创建自己的MapType,但它会导致
Uncaught TypeError: google.maps.MapType is not a function
这很奇怪,因为API实际上已加载 - 如果我评论/删除MapType代码,所有其他函数都能正常工作:
var customMapType = new google.maps.MapType({
maxZoom: 24
});
这里的地图初始化:
function initMap(placeholderId, aCenter)
{
var mapOptions =
{
center: aCenter,
mapTypeControl: false,
streetViewControl: false,
scaleControl: true,
rotateControl: true,
mapTypeId: google.maps.MapTypeId.SATELLITE
}
return new google.maps.Map(document.getElementById(placeholderId), mapOptions);
}
API初始化:
function InitializeLayoutControl(onLoadComplete, googleAPIKey)
{
loadCompleteCallback = onLoadComplete;
loadScript("https://maps.googleapis.com/maps/api/js?v3.exp&" + ((typeof googleAPIKey === 'undefined' || googleAPIKey === '') ? "" : "key=" + googleAPIKey + "&") + "callback=LoadComplete&libraries=drawing,places,geometry");
}
(这很有效)
答案 0 :(得分:0)
我相信您需要从google.maps.MapType
更改为google.maps.ImageMapType
根据https://developers.google.com/maps/documentation/javascript/maptypes?hl=en
没有机会尝试,但看起来像是问题。
答案 1 :(得分:0)
google.maps.MapType是一个界面。请看一下这个link。这不能直接使用,您必须通过实现它的类访问它或创建一个类来实现它。在创建自定义地图类型时,您可能需要MapTypeRegistry。这将存储该特定地图的自定义地图类型。
这是文档中的example:
// Modify the control to only display two maptypes, the
// default ROADMAP and the custom 'mymap'.
// Note that because this is simply an association, we
// don't need to modify the MapTypeRegistry beforehand.
var MY_MAPTYPE_ID = 'mymaps';
var mapOptions = {
zoom: 12,
center: brooklyn,
mapTypeControlOptions: {
mapTypeIds: [google.maps.MapTypeId.ROADMAP, MY_MAPTYPE_ID]
},
mapTypeId: MY_MAPTYPE_ID
};
// Create our map. This creation will implicitly create a
// map type registry.
map = new google.maps.Map(document.getElementById("map"),
mapOptions);
// Create your custom map type using your own code.
// (See below.)
var myMapType = new MyMapType();
// Set the registry to associate 'mymap' with the
// custom map type we created, and set the map to
// show that map type.
map.mapTypes.set(MY_MAPTYPE_ID, myMapType);