Rai*_*olt 9 javascript google-maps
使用 Google 的光栅地图,我可以创建一个具有这样的初始样式的地图(示例取自Google 的文档):
var mapStyles = [{ elementType: 'geometry', stylers: [{ color: '#242f3e' }]}];
var mapOptions = {
center: { lat: 40.674, lng: -73.945 },
zoom: 12,
styles: mapStyles
};
var map = new google.maps.Map(document.getElementById('map'), mapOptions );
Run Code Online (Sandbox Code Playgroud)
然后,我可以像这样更改样式:
var newStyles = [{ elementType: 'geometry', stylers: [{ color: '#ffffff' }]}];
map.setOptions({ styles: newStyles });
Run Code Online (Sandbox Code Playgroud)
对于基于矢量的地图,我需要指定地图 ID,而不是在代码中指定样式。该地图 ID 将具有某人在云中配置的样式。我按照此处的说明创建了其中两个地图 ID(一个普通主题和一个深色主题),然后像这样实例化我的地图:
var mapOptions = {
center: { lat: 40.674, lng: -73.945 },
zoom: 12,
mapId: 'abcd1234mymapid'
};
var map = new google.maps.Map(document.getElementById('map'), mapOptions );
Run Code Online (Sandbox Code Playgroud)
我测试了两个地图 ID 以确保主题正常工作。问题是我不知道如何在创建地图后更改地图 ID。我想允许用户在地图 ID 之间切换。我试过:
// Does not work
map.setOptions({mapId: 'efgh5678myothermap'})
// Also does not work
map.mapId = 'efgh5678myothermap'
Run Code Online (Sandbox Code Playgroud)
这个功能是谷歌的矢量地图消失了还是我做错了?
我确实确保在加载 Google 的脚本时包含两个地图 ID:
<script src="https://maps.googleapis.com/maps/api/js?key=KEY&v=weekly&callback=yourInitMapMethod&map_ids=abcd1234mymapid,efgh5678myothermap"></script>
Run Code Online (Sandbox Code Playgroud)
小智 8
目前,从一种样式切换到另一种样式(更改 mapIds)的唯一解决方法是创建一个新的地图实例。请注意,每个地图实例都是收费的。根据动态地图使用和计费。你可以这样做:
//Event that triggers change of map style
document.getElementById("map_id_1").addEventListener("click", function(){
mapID = "YOUR_MAP_ID"
new google.maps.Map(document.getElementById("map"), {
...sharedOptions,
mapId: mapID,
useStaticMap: false
});
});
Run Code Online (Sandbox Code Playgroud)
这是您可以尝试的完整JSFiddle 示例。
setOptions()当前无法通过该函数动态更改 mapId ,因为似乎尚未根据文档将 mapId 添加为MapOptions 接口的属性。
我已经在 Google Maps Public 问题跟踪器中提交了一个功能请求来支持这个。
| 归档时间: |
|
| 查看次数: |
1633 次 |
| 最近记录: |