5

Tóm tắt
Tôi muốn tìm tất cả các điểm đánh dấu nằm trong khu vực hình chữ nhật được tạo bằng cách kéo chuột lên bản đồ. Tính năng này có được hỗ trợ bởi bất kỳ plugin jQuery hay cái gì khác không? Nếu không, tôi muốn thực hiện điều này trong dự án của tôi. Tôi nghĩ rằng nó sẽ được mát mẻ.Làm thế nào để có được điểm đánh dấu bên trong một khu vực được chọn bằng cách kéo chuột?

Chi tiết
Tôi đang sử dụng Google Maps v2 vì tôi muốn hỗ trợ IE 6 trong dự án của mình.

Tôi là người mới bắt đầu trong Maps và đã trải qua Developer's guide section và một số bản trình diễn cơ bản và các câu hỏi SO khác.

Đây là ý tưởng của tôi cho đến nay -

  • dùng nhấp vào một "Chọn một khu vực" nút trong phần kiểm soát của bản đồ. Điều này gọi disableDragging() và người dùng đã sẵn sàng để thực hiện lựa chọn. (Có thể là http://code.google.com/apis/maps/documentation/javascript/v2/controls.html#Custom_Controls cho một số ý tưởng về cách thực hiện việc này)

  • Sau đó, người dùng thực hiện lựa chọn khu vực. Các điểm kết thúc lựa chọn bắt đầu và lựa chọn được ghi nhận và giả định chúng là hai góc đối diện của hình chữ nhật, các dấu trong đó được tìm thấy. Nhưng, cho đến nay tôi không thấy bất kỳ mã làm việc nào để có được tọa độ của điểm được nhấp. Tôi đoán tốt hơn là nên sử dụng vĩ độ/kinh độ làm tọa độ thay vì tọa độ x-y thực tế. Câu hỏi này Google Maps API using jQuery Plugin: How to get a marker's latitude and longitude on click? thảo luận về việc nhận được vĩ độ/kinh độ của một điểm đánh dấu khi nhấp vào nó, nhưng tôi chưa thử thành công.

Tóm tắt
Dưới đây là câu hỏi của tôi một lần nữa -

  • Làm thế nào để hiển thị một vùng chọn hình chữ nhật trên bản đồ? (thường có màu xám nhạt và trong suốt)

  • Cách lấy vĩ độ/kinh độ của điểm được nhấp và sau đó mở rộng nó để lấy điểm bắt đầu và điểm kết thúc lựa chọn.

Tôi có kinh nghiệm với jQuery và nếu có một số giải pháp tốt với plugin jQuery, vui lòng cho tôi biết. Tôi thấy danh sách này là 10 jQuery Plugins for Easier Google Map Installation nhưng không chắc liệu có bất kỳ điều nào trong số đó sẽ giúp tôi đáp ứng yêu cầu của tôi hay không.

Khi tôi có danh sách điểm đánh dấu, tôi muốn điền một số thông tin liên quan bên trong phần hiển thị riêng biệt, để mỗi lần người dùng chọn một số điểm đánh dấu, thông tin tương ứng sẽ được hiển thị trong phần hiển thị. Phần đó dễ dàng hơn.

Cảm ơn

Trả lời

4

Bạn có thể kiểm tra KeyDragZoom dụ dưới Google Maps API Demo Gallery để đạt được tính năng lựa chọn hình chữ nhật. Bạn có thể tìm thấy tài liệu here.

Đối với vấn đề thứ hai, bạn có thể sử dụng lớp GLatLngBounds và chức năng containsLatLng(latlng:GLatLng) của nó. Bằng cách đặt đối tượng GLatLngBounds của bạn thành giới hạn của hình chữ nhật, bạn có thể kiểm tra các điểm đánh dấu của mình dựa vào đó với hàm containsLatLng.

Nếu bạn quyết định sử dụng KeyDragZoom, thêm một người nghe dragend vào getDragZoomObject sẽ cung cấp cho bạn một đối tượng GLatLngBounds mà bạn có thể sử dụng để kiểm tra các dấu của bạn chống lại hàm containsLatLng.

map.enableKeyDragZoom(); 
var dz = map.getDragZoomObject(); 
GEvent.addListener(dz, 'dragend', function (bnds) { 
    // test your markers against bnds here 
}); 
+0

+1 có vẻ như đây chính xác là những gì tôi muốn ... –

+0

Có giải quyết được sự cố. Đối với phần kiểm tra bên trong sự kiện kéo ở trên, giải pháp này http://stackoverflow.com/questions/2949486/how-to-check-if-there-are-any-markers-within-a-google-maps-viewport/ 3298437 # 3298437 có thể được theo sau –