Google maps 将掩码应用于谷歌地图
我有一个使用谷歌地图Javascript API V3的网站。 我想通过在地图顶部放置半透明的颜色来突出感兴趣的区域,中间有一个洞。见附图 切口的位置可以在任何地方。我能够计算出剪切的像素(或lat/lng)坐标,但我正在努力解决的是如何最好地创建遮罩。我看过谷歌的图像平铺覆盖层和多边形,但看不到一个简单的方法来实现这一点。有人能提供一些关于最好的方法的建议吗Google maps 将掩码应用于谷歌地图,google-maps,google-maps-api-3,overlay,Google Maps,Google Maps Api 3,Overlay,我有一个使用谷歌地图Javascript API V3的网站。 我想通过在地图顶部放置半透明的颜色来突出感兴趣的区域,中间有一个洞。见附图 切口的位置可以在任何地方。我能够计算出剪切的像素(或lat/lng)坐标,但我正在努力解决的是如何最好地创建遮罩。我看过谷歌的图像平铺覆盖层和多边形,但看不到一个简单的方法来实现这一点。有人能提供一些关于最好的方法的建议吗 把它弄明白了。万一有人需要这么做 function MaskClass( map ){ //constants var
把它弄明白了。万一有人需要这么做
function MaskClass( map ){
//constants
var MAP_MAX_LAT = 85;
var MAP_MIN_LAT = -85;
var MAP_MAX_LNG = 179;
var MAP_MIN_LNG = -179;
// Object initialisation - create 4 rectangles to mask off the area
var rectangleInitialisationOptions = {
map: map,
fillColor: "#F00",
fillOpacity: 0.3,
strokeOpacity: 0,
clickable: false
};
this.rectangle1 = new google.maps.Rectangle(rectangleInitialisationOptions);
this.rectangle2 = new google.maps.Rectangle(rectangleInitialisationOptions);
this.rectangle3 = new google.maps.Rectangle(rectangleInitialisationOptions);
this.rectangle4 = new google.maps.Rectangle(rectangleInitialisationOptions);
// Method to place the cut-out
this.setMask = function(boundsSouthWest, boundsNorthEast){
var swLat = boundsSouthWest.lat();
var swLng = boundsSouthWest.lng();
var neLat = boundsNorthEast.lat();
var neLng = boundsNorthEast.lng();
this.rectangle1.setBounds(
new google.maps.LatLngBounds(
new google.maps.LatLng(neLat, MAP_MIN_LNG),
new google.maps.LatLng(MAP_MAX_LAT, MAP_MAX_LNG)));
this.rectangle2.setBounds(
new google.maps.LatLngBounds(
new google.maps.LatLng(MAP_MIN_LAT, MAP_MIN_LNG),
new google.maps.LatLng(swLat, MAP_MAX_LNG)));
this.rectangle3.setBounds(
new google.maps.LatLngBounds(
new google.maps.LatLng(swLat, MAP_MIN_LNG),
new google.maps.LatLng(neLat, swLng)));
this.rectangle4.setBounds(
new google.maps.LatLngBounds(
new google.maps.LatLng(swLat, neLng),
new google.maps.LatLng(neLat, MAP_MAX_LNG)));
this.setVisible(true);
};
// Method to show/hide the mask
this.setVisible = function(visibility){
this.rectangle1.setVisible(visibility);
this.rectangle2.setVisible(visibility);
this.rectangle3.setVisible(visibility);
this.rectangle4.setVisible(visibility);
};
}
要使用它
theMask = new MaskClass( referenceToYourMap ); //create mask
theMask.setMask(boundsSouthWest, boundsNorthEast); //place mask somewhere
theMask.setVisible(false); //hide mask
我知道这很晚了,但我没问题。我正在尝试让面具可以拖动,这会很有趣:)