Áp dụng kiểu bản đồ Google tùy chỉnh trong OpenLayers2?


10

Gần đây, tôi tình cờ thấy bài viết thú vị này cho thấy tiềm năng của việc thêm các kiểu tùy chỉnh vào Google Maps. Một số ví dụ về bản đồ theo kiểu có thể được nhìn thấy ở đây và bạn có thể tự thiết kế từ đầu tại đây .

Tôi muốn áp dụng chủ đề 'thang độ xám' cho bản đồ cơ sở OpenLayers của mình: nhập mô tả hình ảnh ở đây

Mô tả phong cách theo bản demo của Google sẽ trông giống như:

var styles = {
  'Greyscale': [
    {              
      featureType: 'all',
      rules: [
        {saturation: -100},
        {gamma: 0.50}
      ]
    }
  ]
}

Bản đồ Google của tôi trong OpenLayers hiện tại trông giống như:

var gmap = new OpenLayers.Layer.Google("Google Streets",
    {
    'numZoomLevels': 20,
    'sphericalMercator': true}
);

Làm cách nào tôi có thể áp dụng chủ đề thang độ xám cho bản đồ của mình?


Google Maps Colorizr googlemapscolorizr.stadtwerk.org có thể hữu ích nếu bạn muốn xác định màu sắc cụ thể của riêng bạn.
radek


Một số ví dụ về cách chơi với màu sắc: 41latitude.com/post/1268734799/google-styled-maps
radek

Đừng muốn buông tiền thưởng? :) Tôi nghĩ rằng simo đã nhận nó
Ragi Yaser Burhum

Thật. Vẫn còn ba ngày thi đấu;]
radek

Câu trả lời:


20

Dường như bạn có thể truy cập trực tiếp vào đối tượng googlemap bằng layer.mapObject .

Tham khảo API gmap để tạo kiểu cho lớp: https://developers.google.com/maps/documentation/javascript/stomme

Đây là một trang ví dụ nhỏ mà tôi đã tạo: http://www.intermezzo-coop.eu/mapping/styled_gmap.html

Xem thêm trình hướng dẫn googlemap: https://mapstyle.withgoogle.com/


Bạn đã thành công, Radek?
simo

@simo: Tôi không chắc chắn chính xác cách sử dụng 'layer.mapObject'
radek

1
@radek; bạn sẽ cần tạo một số JS của riêng bạn để xác định kiểu dáng bản đồ của bạn; Có một vài ví dụ hay về liên kết thứ hai ở đó sẽ cho bạn thấy dòng chảy rất tốt.
DEWright

1
@radek: Tôi chưa kiểm tra nhưng tôi đoán bạn tạo lớp gmap của mình vì vậy var glayer = new OpenLayers.Layer.Google (tùy chọn) , sau đó tạo kiểu của bạn bằng cú pháp Gmap và cuối cùng áp dụng nó bằng glayer.mapObject.mapTypes .set ('hiphop', jayzMapType); xem ví dụ đã cho ở trên. Nếu tôi có thời gian sớm, tôi sẽ cố gắng thực hiện và cho bạn biết
simo

4
@radek: Ở đây chúng tôi đi empreinte-urbaine.eu/mapping/styled_gmap.html
simo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.