2010-05-11 42 views
19

Có thể che giấu các quốc gia láng giềng trong GoogleMap không? Trong trường hợp của tôi, tôi chỉ muốn hiển thị Thụy Điển trên một chế độ xem. Ở chế độ xem thứ hai, chỉ Na Uy, Đan Mạch, v.v ...Tôi có thể hiển thị một quốc gia (bị che khuất) trong GoogleMaps không?

Tôi biết có thể vẽ các đường đa giác và điền chúng tương ứng vào API Maps. Vấn đề là hoặc các bộ kết quả nhận được rất lớn hoặc các dòng có được rất thô vv ... Sẽ được tốt đẹp nếu GoogleMaps có thể cung cấp một quốc gia tại thời điểm mà không có hàng xóm.

Có ai biết về cơ sở dữ liệu phối hợp tốt với biên giới quốc gia không?

Trả lời

0

Bạn đã xem loading in a custom map?

tôi đã không sử dụng nó bản thân mình, nhưng hy vọng liên kết có thể giúp bạn ra ngoài một chút :)

21

Bạn có thể tạo đa giác rất phức tạp trong Maps mà không có thả trong hoạt động nếu bạn lưu trữ chúng ở định dạng tệp KML và tải chúng dưới dạng KmlLayers. KML là một định dạng tệp vectơ dựa trên XML cho dữ liệu địa lý. Vẻ đẹp của việc sử dụng tệp KML trong Google Maps là chúng được hiển thị trên máy chủ của Google thành tệp PNG đơn giản, khớp với độ phân giải hiện tại và hộp giới hạn của chế độ xem Bản đồ của bạn bất kỳ lúc nào, bất kể dữ liệu đa giác gốc phức tạp đến mức nào. Vì vậy, tất cả sự phức tạp được xử lý phía máy chủ tại Google.

Đây là sample of a project, nơi tôi đã sử dụng mặt nạ như vậy cho một trong các tiểu bang liên bang của Đức. (Môi trường xung quanh trong trường hợp này không hoàn toàn bị che đi nhưng chỉ bị làm mờ. Nhưng bạn cũng có thể che giấu chúng dễ dàng bằng cách thay đổi giá trị alpha của màu tô màu trong tệp KML.)

Để xem xét nhanh KML các tệp cũng có thể được tải trực tiếp vào trang web công cộng của Google Maps (bằng cách nhập URL của chúng vào trường tìm kiếm). Đây là tệp KML mà tôi đã sử dụng trong dự án ở trên, loaded directly into Google Maps. (Tôi đã thực sự sử dụng một tệp KMZ ở đây, nhưng đó chỉ đơn giản là một tệp KML được đóng gói vào một kho lưu trữ ZIP. Bạn có thể đóng gói và giải nén nó bằng các công cụ ZIP thông thường.)
BEGIN CẬP NHẬT 07/2015: Thật không may Google đã loại bỏ khả năng trực tiếp nhập URL của tệp KML/KMZ vào trường tìm kiếm của Google Maps công khai khi chúng khởi chạy phiên bản được thiết kế lại vào năm 2014. Bạn vẫn có thể sử dụng tất cả các kỹ thuật được thảo luận trong câu trả lời này, nhưng bạn không thể đơn giản xem trước tệp KML bằng cách nhập URL của chúng trường tìm kiếm nữa. Nếu bạn cần KMZ được đề cập ở trên để phân tích sâu hơn, bạn có thể download it here. END UPDATE

Xin lưu ý rằng Google ngụ ý giới hạn kích thước đối với tệp KML/KMZ (hiện không nén 10 Mb, 3 Mb được nén - details see here). Nếu tệp KML của bạn phải lớn, có sẵn phần mềm để giảm độ phức tạp (xem ví dụ herehere).

Bạn sẽ tìm thấy dữ liệu bản đồ miễn phí tại nhiều nơi trên Internet, hầu hết trong số chúng ở định dạng shapefile ESRI. Một nguồn tuyệt vời cho các bản đồ quốc gia là http://www.gadm.org/ với lợi thế lớn là cung cấp dữ liệu của chúng theo định dạng KML/KMZ. Nếu bạn cần phải chuyển đổi shapefiles ESRI thành KML, hãy xem số lớn (và miễn phí) OGR converter.

Xin lưu ý rằng tệp KML chỉ là giải pháp nếu đa giác của bạn tĩnh (như đường biên của Thụy Điển) và không phụ thuộc vào bất kỳ đầu vào nào của người dùng. Đối với đa giác động, bạn sẽ vẫn phải sử dụng lớp Đa giác của API Maps với các hạn chế phức tạp mà bạn đã đề cập.

+0

Hi, câu trả lời tuyệt vời, nhưng liên kết kmz bị hỏng. Bạn đã tạo kiểu dấu vị trí như thế nào để bên ngoài bị che dấu – wrecker

+1

Xin chào @wrecker, bạn đã đúng, liên kết đã bị hỏng. Tôi đã sửa liên kết nhưng tôi thấy rằng tùy chọn xem trước trực tiếp tệp KML/KMZ trong trường tìm kiếm của Google Maps công khai đã bị xóa khi họ khởi chạy phiên bản mới của họ vào năm 2014. Bạn vẫn có thể sử dụng tất cả các kỹ thuật được thảo luận tại đây, bạn chỉ mất tùy chọn xem trước đơn giản. Để che giấu bên ngoài của một đất nước, tôi đặt một vòng tròn rất lớn với đất nước bị loại ra khỏi nó. Tải xuống KMZ của tôi (liên kết hoạt động trở lại ngay bây giờ) và kiểm tra nó. – Jpsy

4

đã có một vấn đề tương tự và quản lý nó bằng cách kết hợp với các bảng gamps fusion:

var table_id = 420419; //can be exchanged wit another table 
var FT_Query = "SELECT 'kml_4326' FROM "+ table_id +" WHERE 'name_0' NOT EQUAL TO 'SWEDEN'"; 
var FT_Options = 
    { 
    suppressInfoWindows: true, 
    query: FT_Query 
    }; 
var layer = new google.maps.FusionTablesLayer(table_id, FT_Options); 
layer.setMap(map); 
Các vấn đề liên quan