我如何自定義google maps api(v3 javascript)縮放按鈕到我自己的圖像。自定義Google地圖API V3縮放按鈕
回答
經過幾小時的搜索,我找到了解決方案 只要確保您替換您的API ID! 享受!
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0; padding: 0 }
#map-canvas { height: 60%; width:60%; margin:20px auto; border:1px solid; padding-left:100px; }
</style>
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=YOUR-MAP_API-ID&sensor=false®ion=AU">
</script>
<script type="text/javascript">
function HomeControl(controlDiv, map) {
google.maps.event.addDomListener(zoomout, 'click', function() {
var currentZoomLevel = map.getZoom();
if(currentZoomLevel != 0){
map.setZoom(currentZoomLevel - 1);}
});
google.maps.event.addDomListener(zoomin, 'click', function() {
var currentZoomLevel = map.getZoom();
if(currentZoomLevel != 21){
map.setZoom(currentZoomLevel + 1);}
});
}
var map;
var markersArray = [];
function initialize() {
var mapDiv = document.getElementById('map-canvas');
var myLatlng = new google.maps.LatLng(-33.90224, 151.20215);
var mapOptions = {
zoom: 15,
center: myLatlng,
Marker: true,
panControl: false,
zoomControl: false,
streetViewControl: false,
overviewMapControl: false,
mapTypeControl: false,
mapTypeControl: false,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(mapDiv, mapOptions);
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title:"Hello World!"
});
// Create the DIV to hold the control and
// call the HomeControl() constructor passing
// in this DIV.
var homeControlDiv = document.createElement('div');
var homeControl = new HomeControl(homeControlDiv, map);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div id="map-canvas"></div>
<div id="zoomout" style="border:1px solid; width:150px; cursor:pointer; margin-bottom:20px;">ZOOM ME OUT</div>
<div id="zoomin" style="border:1px solid; width:150px; cursor:pointer; ">ZOOM ME IN</div>
</body>
</html>
是否可以添加自定義Pegman按鈕? – Anuket
@Antonio Almeida謝謝 –
我這樣做是在CSS方式:
#map-container .gm-style > .gmnoprint > .gmnoprint { background: url(/images/map-zoom-controls.png) no-repeat center center !important; width: 42px !important; height: 68px !important; }
#map-container .gm-style > .gmnoprint > .gmnoprint > div > img { display: none !important; }
#map-container .gm-style > .gmnoprint > .gmnoprint div[title="Zoom in"] { top: 2px !important; left: 2px !important; width: 38px !important; height: 31px !important; }
#map-container .gm-style > .gmnoprint > .gmnoprint div[title="Zoom out"] { top: 35px !important; left: 2px !important; width: 38px !important; height: 30px !important; }
這是具有圖像: 寬度:42PX; height:68px;
做出自己的調整。
注意
這僅適用於您正在使用的英語版本,因爲標題屬性。
非常好!對我來說工作非常好! – SquareCat
只要Google地圖用戶界面提供的結構保持不變,您就不會依賴硬編碼規則來實現您的目標。 – torresomar
我在晚會很晚,但這裏是我的兩美分。
您有兩種基本選擇:
選項1:你要麼使用HTML/CSS自己,然後你就可以使用位置絕對或類似手段放置在地圖上,在正確的位置創建控件。儘管這在製作中有效,但我不喜歡這樣做,因爲元素的HTML/CSS不會在顯示地圖的同時加載。此外,您正在爲控件分隔您的HTML/CSS代碼,以便在不同的頁面重複使用相同的地圖更加困難。例如「我忘了添加控件了嗎?」
選項2:創建a custom control它的外觀和感覺你喜歡的變焦控制器。下面是一個關於這個在實踐中的代碼。
總之,你需要通過調用先禁用正常UI控制器:
var mapOptions = {
zoom: 12,
center: chicago,
/* Disabling default UI widgets */
disableDefaultUI: true // <-- see this line
}
然後你只需要創建一個控制器,並使用它。
HTML:
...
<div id="map-canvas"></div>
...
CSS:
html, body, #map-canvas {
height: 100%;
margin: 0px;
padding: 0px;
}
的JavaScript:
var map;
var chicago = new google.maps.LatLng(41.850033, -87.6500523);
/**
* The ZoomControl adds +/- button for the map
*
*/
function ZoomControl(controlDiv, map) {
// Creating divs & styles for custom zoom control
controlDiv.style.padding = '5px';
// Set CSS for the control wrapper
var controlWrapper = document.createElement('div');
controlWrapper.style.backgroundColor = 'white';
controlWrapper.style.borderStyle = 'solid';
controlWrapper.style.borderColor = 'gray';
controlWrapper.style.borderWidth = '1px';
controlWrapper.style.cursor = 'pointer';
controlWrapper.style.textAlign = 'center';
controlWrapper.style.width = '32px';
controlWrapper.style.height = '64px';
controlDiv.appendChild(controlWrapper);
// Set CSS for the zoomIn
var zoomInButton = document.createElement('div');
zoomInButton.style.width = '32px';
zoomInButton.style.height = '32px';
/* Change this to be the .png image you want to use */
zoomInButton.style.backgroundImage = 'url("http://placehold.it/32/00ff00")';
controlWrapper.appendChild(zoomInButton);
// Set CSS for the zoomOut
var zoomOutButton = document.createElement('div');
zoomOutButton.style.width = '32px';
zoomOutButton.style.height = '32px';
/* Change this to be the .png image you want to use */
zoomOutButton.style.backgroundImage = 'url("http://placehold.it/32/0000ff")';
controlWrapper.appendChild(zoomOutButton);
// Setup the click event listener - zoomIn
google.maps.event.addDomListener(zoomInButton, 'click', function() {
map.setZoom(map.getZoom() + 1);
});
// Setup the click event listener - zoomOut
google.maps.event.addDomListener(zoomOutButton, 'click', function() {
map.setZoom(map.getZoom() - 1);
});
}
function initialize() {
var mapDiv = document.getElementById('map-canvas');
var mapOptions = {
zoom: 12,
center: chicago,
/* Disabling default UI widgets */
disableDefaultUI: true
}
map = new google.maps.Map(mapDiv, mapOptions);
// Create the DIV to hold the control and call the ZoomControl() constructor
// passing in this DIV.
var zoomControlDiv = document.createElement('div');
var zoomControl = new ZoomControl(zoomControlDiv, map);
zoomControlDiv.index = 1;
map.controls[google.maps.ControlPosition.TOP_LEFT].push(zoomControlDiv);
}
initialize();
注:此代碼不含任何FANC y圖標等,只是佔位符。因此,您可能需要調整以適應您的需求。此外,請記住添加HTML5標準標籤和腳本包括谷歌地圖api v3的JavaScript。我只添加了<div id="map-canvas"></div>
,因爲對身體其他部分的需求非常明顯。
要查看直播:Here is working jsfiddle example
乾杯。
太棒了。 –
非常感謝你。 –
這很好,謝謝!一個小的改進可能是給出縮放控件的類名,如'controlWrapper.setAttribute(「class」,「custom-zoom-wrapper」);'等等。這意味着樣式可以添加到css而不是js中,從而導致更簡潔的代碼並允許媒體查詢,即更小屏幕上的更小按鈕。 – Davey
- 1. Google Maps API v3自定義按鈕
- 2. Bug在谷歌地圖API創建自定義按鈕v3
- 3. 根據縮放級別縮放自定義標記Google地圖
- 4. Google Maps API v3:地形地圖的自定義樣式
- 5. 使用縮放調整自定義圖像標記大小 - Google Maps API v3
- 6. Google Maps V3:根據地圖縮放級別縮放折線?
- 7. Google Plus API自定義分享按鈕
- 8. 自定義Google地圖API「圖標」InfoWindows
- 9. 如何爲谷歌地圖api v3街景製作自定義關閉按鈕?
- 10. 自定義按鈕panUp panDown panLeft panRight谷歌地圖API V3 event.addDomListener不工作
- 11. 谷歌地圖api v3擴展按鈕
- 12. 如何動態設置Google地圖自定義縮放級別?
- 13. Google地圖API V2至V3
- 14. Google Maps Api v3自定義InfoWindow - 「google未定義」錯誤
- 15. Google Maps Api v3自定義InfoWindow - 「google未定義」錯誤
- 16. Google GWT地圖API V3 Java綁定
- 17. Google地圖API縮放後setcenter
- 18. 自定義圖形控件[Google地圖v3繪圖庫]
- 19. 如何在Google API中切換自定義地圖類型?
- 20. MapKit縮放按鈕
- 21. OpenLayers3自定義地圖縮放標記縮放
- 22. Google地圖v3顯示可縮放圖像
- 23. 自定義圖標谷歌地圖V3
- 24. 使用自定義按鈕控制Google地圖位置
- 25. Google Maps API v3街景「google未定義」
- 26. 縮放/縮放Div後,在Google Maps API v3上使用圖形管理器?
- 27. Ionic - 谷歌地圖自定義按鈕
- 28. Google地圖自定義圖像和自定義座標
- 29. 谷歌地圖API v3自定義圖標的興趣點
- 30. 谷歌地圖API v3方向的自定義圖標
你解決了這個問題嗎? – fledgling