2014-06-26 21 views
12

Tôi đang sử dụng GeoJSON làm nguồn dữ liệu cho Google Maps. Tôi đang sử dụng v3 của API để tạo ra một lớp dữ liệu như sau:Điểm đánh dấu tùy chỉnh cho các điểm từ tệp geoJson với Google Maps

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp"></script> 
<script> 
var map; 
function initialize() { 

    //Initialise the map 
    var myLatLng = new google.maps.LatLng(53.231472,-0.539783); 
    map = new google.maps.Map(document.getElementById('map-canvas'), { 
    zoom: 17, 
    center: myLatLng, 
    scrollwheel: false, 
    panControl: false, 
    zoomControl: false, 
    scaleControl: true, 
    disableDefaultUI: true 
    }); 

    //Initialise base folder for icons 
    var iconBase = '/static/images/icons/'; 

    //Load the JSON to show places 
    map.data.loadGeoJson('/api/geo'); 

} 

google.maps.event.addDomListener(window, 'load', initialize); 
</script> 

<div id="map-canvas"></div> 

Nguồn dữ liệu GeoJSON của tôi là như sau:

{ 
    "type": "FeatureCollection", 
    "features": [ 
    { 
     "type": "Feature", 
     "geometry": { 
     "type": "Point", 
     "icon": "/static/images/icons/map-marker-do.png", 
     "coordinates": [ 
      -0.53743, 
      53.23437 
     ] 
     }, 
     "properties": { 
     "name": "Cathedral", 
     "description": "One of Europe’s finest Gothic buildings, once the tallest building in the world that dominates Lincoln's skyline.", 
     "icon": "/static/images/icons/map-marker-do.png" 
     } 
    } 
    ] 
} 

Những gì tôi đang cố gắng làm là làm cho biểu tượng điểm đánh dấu trên bản đồ đến từ thuộc tính "biểu tượng" trong JSON, nhưng không thể tìm ra cách lấy dữ liệu để thay đổi điểm đánh dấu mặc định. Bất cứ ai có thể đưa ra lời khuyên nào? Cảm ơn.

+0

Nơi nào bạn thêm điểm đánh dấu? Bạn làm gì với 'iconBase'? – MrUpsidown

+0

@MrUpsidown: anh ấy sử dụng [** lớp dữ liệu **] (https://developers.google.com/maps/documentation/javascript/datalayer), các tính năng (ví dụ: điểm đánh dấu/Điểm) được tải qua loadGeoJson sẽ được thêm vào tự động theo API –

+0

Tệ của tôi. Tôi thấy biểu tượng đó với một phần của URL trong JSON và không nghĩ xa hơn :-) – MrUpsidown

Trả lời

24

Sử dụng một phong cách chức năng (phong cách chức năng cho phép bạn áp dụng phong cách dựa trên một tính năng cụ thể)

map.data.setStyle(function(feature) { 
    return {icon:feature.getProperty('icon')}; 
    }); 
+0

Ngọt ngào. Cám ơn rất nhiều. :) – doubleplusgood

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