这是一个只是为了好玩回答。
不是一个真正的答案,因为它真的感觉像一个肮脏的小黑客,而且我不知道要明白你刻意突出什么(是所有的街道或结果的路线的要求 —这从你的问题是不清楚的)。
但基本上,我加了2张地图。第一个是基础地图,另一个位于第一个地图的顶部,具有边框半径和应用的样式。
然后我同步两个地图,以便它们都相对移动(平移/缩放时)。
var myLatlng = new google.maps.LatLng(51.51, -0.12);
var styles = [{
"featureType": "road",
"elementType": "geometry.fill",
"stylers": [{
"color": "#ff3380"
}]
}];
var mapOptions = {
zoom: 12,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var roundedMapOptions = {
zoom: 12,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP,
disableDefaultUI: true,
scrollwheel: false,
styles: styles
};
var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
var roundedMap = new google.maps.Map(document.getElementById("map-rounded"), roundedMapOptions);
google.maps.event.addListener(map, 'drag', function() {
roundedMap.setCenter(map.getCenter());
});
google.maps.event.addListener(roundedMap, 'drag', function() {
map.setCenter(roundedMap.getCenter());
});
google.maps.event.addListener(map, 'idle', function() {
roundedMap.setCenter(map.getCenter());
});
google.maps.event.addListener(map, 'zoom_changed', function() {
roundedMap.setZoom(map.getZoom());
});
注上使用idle
事件侦听器的:
如果您正在非常迅速地拖动地图,有时同步是种丢失。因此,通过idle
事件侦听器,地图在拖动后重新同步。
请注意,我说的CSS规则的下方隐藏版权圆形地图上:
#map-rounded .gm-style-cc {
display: none;
}
这显然反对Google Maps TOS,但因为它是仍然存在的底图上,我会认为这是一个公平或可接受误用的API :)
JSFiddle demo
可以突出使用[风格]道路(https://developers.google.com/maps/documentation/javascript/reference?csw=1#MapTypeStyle),但我想不出办法只在特定区域内进行。 – MrUpsidown 2015-02-10 10:35:48