2015-01-26 33 views
5

tôi có bản đồ Leaflet với công cụ tìm tọa độ, dấu phẩy tọa độ có chứa Tiêu đề. im cố gắng xoay điểm đánh dấu biểu tượng của tôi đến điểm Heading. mã: (sống tại địa chỉ: http://84.95.7.35/~hzcoil/index2.html)Xoay Marker với tờ rơi

<script src="http://cdn.leafletjs.com/leaflet-0.6.4/leaflet.js" type="text/javascript"></script> 
<script src="http://84.95.7.35/~hzcoil/js/jquery-1.11.0.min.js" type="text/javascript"></script> 
<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.6.4/leaflet.css" /> 

<script> 
function init() { 

var latScaleVal = 8300; 
var longScaleVal = 8300; 
var latScale = latScaleVal/256; 
var longScale = longScaleVal/256; 
var fixLat = function(e) { 
if (e > 0) { 
e = -e 
} else { 
e = Math.abs(e) 
} 
return e 
}; 

var coords = function(e, t) { 
e = fixLat(e); 
var n = e/latScale + latScaleVal/2/latScale; 
var r = t/longScale + longScaleVal/2/longScale; 
return [-n, r] 
}; 


var mapMinZoom = 0; 
var mapMaxZoom = 6; 
var map = L.map('map', { 
    maxZoom: mapMaxZoom, 
    minZoom: mapMinZoom, 
    crs: L.CRS.Simple 
}).setView([0, 0], mapMaxZoom); 

var mapBounds = new L.LatLngBounds(
map.unproject([0, 8192], mapMaxZoom), 
map.unproject([8192, 0], mapMaxZoom)); 

map.fitBounds(mapBounds); 
L.tileLayer('http://www.h1z1maps.com/images/newmap/{z}/{x}/{y}.jpg', { 
    minZoom: mapMinZoom, maxZoom: mapMaxZoom, 
    bounds: mapBounds, 
    noWrap: true 
}).addTo(map); 


var roticon = L.icon({ 
iconUrl: "https://www.mapbox.com/maki/renders/[email protected]", 
className: 'RotatedMarker', 
iconSize: [50, 50], 
iconAnchor: [10, 21], 
popupAnchor: [5, -35] 
}); 


$("#findmyloc").on("submit", function() { 
try { 
var e = $("#locbox").val().match(/-?[0-9.0-9]+/g); 
$("#locbox").val(""); 
var goto = L.marker(coords(e[0], e[2], e[3]), {icon:roticon}).addTo(map); 
} catch (t) { 
console.log(t) 
} 
return false 
}); 

    } 
</script> 

<style> 
    html, body, #map { width:700px; height:500px; margin:0; padding:0; } 
</style> 


    </head> 
<body onload="init()"> 
<div id="map"></div> 

<form id="findmyloc"> 
<input id="locbox" type="text" value="x=2196.170 y=39.880 z=1895.350, Heading: 0.624" /> 
<input type="submit" class="search" value="submit" /> 
</form> 
</body> 

tôi thấy điều này: https://github.com/bbecquet/Leaflet.PolylineDecorator/blob/master/src/L.RotatedMarker.js

tôi đã làm việc trên nó khoảng 5 giờ, nhưng tôi không thể phù hợp với nó để mã của tôi. điều này là tọa độ khen ngợi: x=2196.170 y=39.880 z=1895.350, Heading: 0.624 Tiêu đề "phải là xoay vòng.

Tôi làm cách nào để khớp mã đó với mã của mình?

+0

Bạn có thể thử sử dụng biến đổi: dịch (595px, 243px) rotateZ (190deg) – Blauharley

Trả lời

3

Trang mẫu của bạn không bao gồm tiện ích mở rộng RotatedMarker.

Khi bạn bao gồm nó, bạn có thể gọi nó bằng cách sử dụng phương pháp rotatedMarker để tạo điểm đánh dấu và đi qua các góc trong các tùy chọn đối tượng (nó phải nằm trong độ, không radian)

var goto = L.rotatedMarker(coords(e[0], e[2]), { 
     icon:roticon, 
     angle:+e[3]*180/Math.PI // convert to degrees 
    }).addTo(map); 

Demo tại http://plnkr.co/edit/QioXRLA8PYnrlb2ZH7kr?p=preview

+0

Cảm ơn bạn rất nhiều! Bạn đã giúp tôi rất nhiều :) –

Các vấn đề liên quan