Tôi làm cách nào để tùy chỉnh các nút thu phóng của bản đồ google api (v3 javascript) sang hình ảnh của riêng tôi.Nút Thu phóng V3 Bản đồ Google API tùy chỉnh
Trả lời
Điều này là không thể. Bạn có thể tinh chỉnh sự xuất hiện của họ một chút bằng cách sử dụng một tập hợp các thông số tùy chọn được xác định trước hoặc bạn có thể thực hiện điều khiển bản đồ tùy chỉnh của bạn cung cấp chức năng tương tự như điều khiển thu phóng. Để biết thêm thông tin, hãy xem this page.
CẬP NHẬT: Đã sửa liên kết. Cảm ơn vì bạn đã phản hồi!
liên kết không hoạt động? – HAWKES08
Vui lòng sửa liên kết của bạn hoặc đăng các hướng dẫn có liên quan vào câu trả lời của bạn. – Sparky
[Cố định liên kết tại đây] (http://code.google.com/intl/pt-BR/apis/maps/documentation/javascript/controls.html). Anh ta vừa bỏ lỡ chữ "L" ở cuối "htm". – RASG
Sau giờ tìm kiếm, tôi đã tìm thấy giải pháp Chỉ cần đảm bảo bạn thay thế ID API của mình! Tận hưởng!
<!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>
có thể thêm nút Người hình mắc áo tùy chỉnh không? – Anuket
@Antonio Almeida Cảm ơn –
tôi đã làm nó theo cách 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; }
Đây là một hình ảnh có: width: 42px; chiều cao: 68px;
Thực hiện các điều chỉnh của riêng bạn.
ATTENTION
này chỉ áp dụng nếu bạn đang sử dụng phiên bản tiếng Anh vì các thuộc tính tiêu đề.
Rất tốt! Hoạt động hoàn toàn tốt cho tôi! – SquareCat
Điều này sẽ hoạt động miễn là cấu trúc được cung cấp bởi giao diện người dùng Google Maps vẫn giữ nguyên, bạn không bao giờ nên dựa vào các quy tắc được mã hóa cứng để đạt được mục tiêu của mình. – torresomar
Tôi đến muộn tại bữa tiệc, nhưng đây là hai xu của tôi.
Bạn có về cơ bản hai lựa chọn:
Lựa chọn 1: Bạn có thể tạo ra các điều khiển sử dụng HTML/CSS cho mình, sau đó bạn có thể đặt trên bản đồ để đúng vị trí sử dụng vị trí phương tiện tuyệt đối hoặc tương đương. Mặc dù điều này làm việc trong sản xuất, tôi không thích điều này, bởi vì HTML/CSS của bạn cho phần tử không tải cùng một lúc so với bản đồ được hiển thị. Ngoài ra, bạn đang tách mã HTML/CSS của bạn cho các điều khiển để khó sử dụng lại cùng một bản đồ ở các trang khác nhau. ví dụ. "Tôi đã quên thêm các điều khiển chưa?"
Phương án 2: Bạn tạo a custom control trông và cảm thấy các bộ điều khiển zoom mà bạn thích. Dưới đây là một mã về điều này trong thực tế.
Nói tóm lại, bạn cần phải đầu tiên vô hiệu hóa điều khiển giao diện người dùng bình thường bằng cách gọi:
var mapOptions = {
zoom: 12,
center: chicago,
/* Disabling default UI widgets */
disableDefaultUI: true // <-- see this line
}
Và sau đó bạn chỉ cần tạo bộ điều khiển và sử dụng nó.
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();
Lưu ý: Mã này không chứa bất kỳ fanc y và các biểu tượng tương tự, chỉ là trình giữ chỗ. Vì vậy, bạn có thể cần phải điều chỉnh nó để phù hợp với nhu cầu của bạn. Hơn nữa, hãy nhớ thêm thẻ HTML5 bình thường và tập lệnh bao gồm cho bản đồ google api v3 javascript. Tôi chỉ thêm <div id="map-canvas"></div>
vì nhu cầu nghỉ ngơi của cơ thể khá rõ ràng.
Để xem nó sống: Here is working jsfiddle example
Cheers.
Thật tuyệt vời. –
Cảm ơn bạn rất nhiều vì điều này. –
Công trình này tuyệt vời, cảm ơn bạn! Một cải tiến nhỏ có thể là cung cấp cho các tên lớp điều khiển thu phóng như 'controlWrapper.setAttribute (" class "," custom-zoom-wrapper ");' etc. Điều này có nghĩa là các kiểu có thể được thêm vào css thay vì js, dẫn đến mã sạch hơn và cho phép truy vấn phương tiện tức là các nút nhỏ hơn trên màn hình nhỏ hơn. – Davey
- 1. Google Map API v3 Tùy chỉnh màu
- 2. Thu phóng và căn giữa Bản đồ Google theo các điểm đánh dấu (JavaScript API V3)
- 3. Bản đồ google api v3 màu nền
- 4. Thay đổi kích thước điểm đánh dấu tùy thuộc vào thu phóng Google maps v3
- 5. tắt tính năng kéo thu phóng trong bản đồ Google bằng cách nhấp vào nút
- 6. Phóng to đến trung tâm trên bản đồ trong API Google Maps V3
- 7. API Google Maps v3 có cho phép các giá trị thu phóng lớn hơn không?
- 8. API bản đồ Google V3: Cách thêm dữ liệu tùy chỉnh vào các điểm đánh dấu
- 9. Google-Maps v3: Cách thay đổi kiểu bản đồ dựa trên mức thu phóng?
- 10. Làm cách nào để tạo nút đóng tùy chỉnh cho chế độ xem phố trên bản đồ google api v3?
- 11. tùy chỉnh bản đồ google InfoWindow
- 12. Dấu bản đồ Google v3 biến mất khi phóng to trên bản đồ hôm nay
- 13. API Google Maps V3 vô hiệu hóa tính năng thu phóng mượt mà
- 14. Cách đặt mức thu phóng trong bản đồ google
- 15. Bản đồ Google Maps API v3 không tải hoàn toàn
- 16. Google Maps Api v3, biểu tượng Cụm tùy chỉnh
- 17. Cách lấy đối tượng MapOptions từ bản đồ bằng API Google Maps v3
- 18. Điểm đánh dấu API bản đồ Google v3 chồng chéo
- 19. tải lười biếng bản đồ google api v3 jQuery callback
- 20. API Google Maps V3: giới hạn bản đồ giới hạn
- 21. Bản đồ Google API v3 ranh giới thành phố
- 22. Biểu tượng điểm đánh dấu tùy chỉnh Google Maps v3 không giữ vị trí của nó trên bản đồ
- 23. Bản đồ Google v2 hoặc v3?
- 24. Google Maps Api v3 tùy chỉnh InfoWindow - lỗi "google không được xác định"
- 25. Làm cách nào để đặt hình ảnh tùy chỉnh cho con trỏ chuột trong bản đồ google api v3
- 26. Sử dụng bản đồ Google Địa điểm của tôi với kiểu API Google Maps v3
- 27. Có thể viết văn bản tùy chỉnh trên API Google Maps v3 không?
- 28. Google maps api v3 vị trí infowindow trong hình ảnh tùy chỉnh
- 29. Tùy chỉnh infowindow trong bản đồ Google android v2
- 30. cách tắt/bật kéo, thu phóng và thay đổi con trỏ trong Google maps v3
Bạn đã giải quyết vấn đề này chưa? – fledgling