6

Tôi biết rằng bản đồ google có các điểm đánh dấu để làm nổi bật một số điểm nhất định trên bản đồ. Tôi cho một số lý do không thoải mái đưa loại bản đồ này trên trang web của tôi và yêu thích các hiệu ứng bản đồ jvector. Nhưng tôi không thể tìm ra cách xác định điểm đánh dấu trong jVectorMap, không ai có manh mối về cách xác định điểm đánh dấu trong jVectorMap và làm nổi bật những điểm đó. Tôi cũng muốn biết làm thế nào bạn sẽ nhận được đến một điểm nhất định trong Bản đồ jVector sử dụng vĩ độ và kinh độ.Cách xác định vị trí vĩ độ và kinh độ với Plugin Bản đồ jVector

Cảm ơn.

+0

Bạn có thể chỉnh sửa tiêu đề không, câu hỏi này không liên quan đến google maps vs jvectormap. Điều này sẽ gây hiểu lầm cho những người đang tìm kiếm một so sánh. –

Trả lời

5

Bây giờ bạn có thể làm điều đó, phiên bản mới của jVectorMap (0.2) giới thiệu tính năng này với thông số markers. Xem bản demo tại đây http://jvectormap.com/examples/markers-world/.

+0

Cảm ơn, Bạn có tạo các điểm đánh dấu là svg không, chúng tôi không thể thêm các điểm đánh dấu của riêng chúng ta làm hình ảnh tùy chỉnh. – defau1t

+0

Rất tiếc, không có phiên bản hiện tại. – bjornd

0

Bản đồ jvector chỉ là một bản đồ vectơ. Bạn sẽ cần phải tạo một số loại tương ứng giữa lat/lng và không gian vectơ của bạn (ví dụ: 1px = 1deg). Điều này sẽ yêu cầu tùy chỉnh bản đồ hoặc thực hiện một số phép đo chính xác để thiết lập thang đo. Chưa kể rằng bạn sẽ cần phải chắc chắn rằng bạn đang sử dụng một mercator projection để các dòng song song thậm chí có nghĩa là những gì bạn nghĩ rằng họ có ý nghĩa;)

EDIT: Nếu bạn có vấn đề với bản đồ google tôi khuyên bạn nên sử dụng một thay thế như leaflet, không cố gắng mở rộng bản đồ jVector để làm hai việc (vẽ điểm và vẽ theo tỷ lệ) mà nó không có ý định làm.

3

Bản đồ thế giới jVectorMap sử dụng phép chiếu van der Grinten. Công thức để chuyển đổi từ/sang bản đồ có thể được tìm thấy trong bài viết WikipediaWolfram này.

Bạn cần phải chia tỷ lệ thành kích thước bản đồ của mình & được bù đắp, vì công thức trên dự án độ dài/vĩ độ (-180 đến 180 độ) cho lưới tọa độ (-1 đến +1).

Ngoài ra, các góc trong công thức phải bằng radian chứ không phải theo độ.

function vanDerGrinten(lat, lng) { 
    lat = lat * Math.PI/180; 
    lng = lng * Math.PI/180; 
    var lng0 = 0; 
    var A1 = 0.5 * Math.abs((Math.PI/(lng - lng0) - (lng - lng0)/Math.PI)); 
    var phi = Math.asin(Math.abs(2 * lat/Math.PI)); 
    var G = Math.cos(phi)/(Math.sin(phi) + Math.cos(phi) - 1); 
    P = G * (2/Math.sin(phi) - 1); 
    Q = A1 * A1 + G; 
    x0 = A1 * A1 * (G - P * P) * (G - P * P) - (P * P + A1 * A1) * (G * G - P * P); 
    x1 = (A1 * (G - P * P) + Math.sqrt(x0)); 
    x2 = (P * P + A1 * A1); 
    x = sgn(lng - lng0) * Math.PI * x1/x2; 
    y = sgn(lat) * Math.PI * Math.abs(P * Q - A1 * Math.sqrt((A1 * A1 + 1) * (P * P + A1 * A1) - Q * Q))/(P * P + A1 * A1); 
    return { _x: x, _y: y }; 
} 
Các vấn đề liên quan