我有一個尺寸爲8576x8576px的圖像,我想使座標匹配1:1。另外我想要在圖像中心的座標0,0(現在中心是-128,128)。我也想顯示座標。我想爲用戶插入座標放置一個定位按鈕,然後在地圖上找到它們。 這樣的事情:http://xero-hurtworld.com/map_steam.php (我使用相同的圖像,但更大)。我製作了268像素的大小。圖像上的傳單自定義座標
我迄今爲止代碼:
https://jsfiddle.net/ze62dte0/
<!DOCTYPE html>
<html>
<head>
<title>Map</title>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.6.4/leaflet.css" />
<!--[if lte IE 8]>
<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.6.4/leaflet.ie.css" />
<![endif]-->
<script src="http://cdn.leafletjs.com/leaflet-0.6.4/leaflet.js" charset="utf-8"></script>
<script>
function init() {
var mapMinZoom = 0;
var mapMaxZoom = 3;
var map = L.map('map', {
maxZoom: mapMaxZoom,
minZoom: mapMinZoom,
crs: L.CRS.Simple
}).setView([0, 0], mapMaxZoom);
window.latLngToPixels = function(latlng){
return window.map.project([latlng.lat,latlng.lng], window.map.getMaxZoom());
};
window.pixelsToLatLng = function(x,y){
return window.map.unproject([x,y], window.map.getMaxZoom());
};
var mapBounds = new L.LatLngBounds(
map.unproject([0, 8576], mapMaxZoom),
map.unproject([8576, 0], mapMaxZoom));
map.fitBounds(mapBounds);
L.tileLayer('{z}/{x}/{y}.jpg', {
minZoom: mapMinZoom, maxZoom: mapMaxZoom,
bounds: mapBounds,
noWrap: true,
tms: false
}).addTo(map);
L.marker([0, 0]).addTo(map).bindPopup("Zero");
L.marker([-128, 128]).addTo(map).bindPopup("center");
var popup = L.popup();
<!-- Click pop-up>
var popup = L.popup();
function onMapClick(e) {
popup
.setLatLng(e.latlng)
.setContent("You clicked in " + e.latlng.toString())
.openOn(map);
}
map.on('click', onMapClick);
}
</script>
<style>
html, body, #map { width:100%; height:100%; margin:0; padding:0; }
</style>
</head>
<body onload="init()">
<div id="map"></div>
</body>
</html>
太謝謝你了!有效!我想要的確切方式! – RogerHN
不客氣,謝謝你的反饋。請你可以考慮加註並接受這個答案?這是堆棧溢出系統來感謝人們,儘管當然一個很好的評論也非常感謝! :-) – ghybs
我注意到的唯一情況是左下角控件顯示的座標和我點擊地圖時有所不同。例如,如果我在紐約(1208,-1864)上放置標記,則控件上顯示的座標不同。我如何讓他們看起來一樣?再次感謝! – RogerHN