使用google map时想要更改地图类型的名字,比如“卫星”改为“XX卫星”等,而googlemap又没有提供修改默认地图类型参数的方法,只提供了获取默认类型参数的方法。
又研究了一下自定义的MapType,发现可以使用自定义的MapType来实现这个目的
封装了一个方法来实现添加自定义地图类型
public function addCoustomMapType(oldType:IMapType, newTypeName:String, newTypeAlt:String): void {
this.map.addMapType(new MapType(oldType.getTileLayers(), oldType.getProjection(), newTypeName, new MapTypeOptions({
shortName: "e",
urlArg: oldType.getUrlArg(),
maxResolution: oldType.getMaximumResolution(),
minResolution: oldType.getMinimumResolution(),
tileSize: oldType.getTileSize(),
textColor: Color.BLACK,
linkColor: Color.RED,
errorMessage: "This sea tile could not be loaded",
alt: newTypeAlt,
radius: oldType.getRadius()
})));
}
调用时可以这样调用
addCoustomMapType(MapType.SATELLITE_MAP_TYPE, "satellite", "satellite map");
这样就实现通过卫星地图类型生成一个自定义名称的地图类型了,照着这个原理,可以将默认的4中类型全部更改为自定义的
addCoustomMapType(MapType.HYBRID_MAP_TYPE, "hybrid", "hybrid map");
addCoustomMapType(MapType.NORMAL_MAP_TYPE, "normal", "normal map");
addCoustomMapType(MapType.PHYSICAL_MAP_TYPE, "physical", "physical map");
完成后会发现地图类型上多了4个我们自定义的类型,然后再删除地图默认的4个即可
this.removeMapType(MapType.NORMAL_MAP_TYPE);
this.removeMapType(MapType.SATELLITE_MAP_TYPE);
this.removeMapType(MapType.HYBRID_MAP_TYPE);
this.removeMapType(MapType.PHYSICAL_MAP_TYPE);
在某些情况下,上述地图类型不能正常切换,后来又研究了一下API,发现一个貌似有用的办法
将上面的addCustomMapType方法改为
public function addCoustomMapType(oldType:IMapType, newTypeName:String, newTypeAlt:String): void {
this.addMapType(new MapType(oldType.getTileLayers(), oldType.getProjection(), newTypeName, MapTypeOptions.getDefaultOptions()));
}
这样就解决了不能正常切换的问题了