Tờ rơi: làm thế nào để sử dụng một điểm đánh dấu tùy chỉnh trên một lớp Geojson?


9

Tôi đang cố gắng đưa lên bản đồ Tờ rơi một Geojson và tất cả đều hoạt động tốt cho đến khi tôi sử dụng điểm đánh dấu blu mặc định.

Bây giờ tôi muốn sử dụng một điểm đánh dấu tùy chỉnh (một biểu tượng .png nhỏ) và tôi đã thay đổi mã của mình theo sau

 var my_json;
 $.getJSON('../Dati/my-geojson.geojson', function(data) {
           my_json = L.geoJson(data, {
            pointToLayer: function(feature, latlng) {
                var smallIcon = L.Icon({
                    options: {
                        iconSize: [27, 27],
                        iconAnchor: [13, 27],
                        popupAnchor:  [1, -24],
                        iconUrl: 'icone/chapel-2.png'
                    }
                });
                return L.marker(latlng, {icon: smallIcon});
            },
           onEachFeature: function (feature, layer) {
                   layer.bindPopup(feature.properties.ATT1 + '<br />'
                                                 + feature.properties.ATT2);
           }
         });
 my_json.addTo(markers.addTo(map));
 TOC.addOverlay(my_json, "My layer name in TOC");
 map.removeLayer(my_json); 
 });

lỗi mà tôi có thể thấy trong Fireorms là

TypeError: this.options.icon is undefined
var anchor = L.point(this.options.icon.options.popupAnchor || [0, 0]);

một cái gì đó đang đi sai nhưng tôi không biết làm thế nào để sửa nó.

Câu trả lời:


7

Chỉ là sự thay đổi

 var smallIcon = L.Icon({
   options: {
     iconSize: [27, 27],
     iconAnchor: [13, 27],
     popupAnchor:  [1, -24],
     iconUrl: 'icone/chapel-2.png'
   }
 });

đến

 var smallIcon = new L.Icon({
     iconSize: [27, 27],
     iconAnchor: [13, 27],
     popupAnchor:  [1, -24],
     iconUrl: 'icone/chapel-2.png'
 });

Xem tài liệu chính thức của biểu tượnghướng dẫn này .

Bạn không sử dụng newcho L.Icon (Đáng lẽ không cần thiết nhưng không có nó, chúng tôi đã gặp phải một vấn đề ...)

Xem bản demo sử dụng lại mẫu của bạn.

Cú pháp của bạn sẽ hoạt động khi mở rộng L.Iconlớp.


Cảm ơn ThomasG77 đã trả lời. Tôi đã thử đề nghị của bạn nhưng một cái gì đó vẫn không hoạt động. Firebird vẫn nói với tôi ... "TypeError: this.options.icon không xác định var anchor = L.point (this.options.icon.options.popupAnchor || [0, 0]);".
Cesare

L.Iconnên lànew L.Icon
ThomasG77

Cả tài liệu và hướng dẫn đều không sử dụng "mới". Tôi tin rằng nó là tùy chọn.
Ed Staub

Bạn đúng về lý thuyết nhưng sao chép mã demo mẫu của tôi và xóa newmà không có nó ... Tôi không có lời giải thích nào ở đây :(
ThomasG77 18/03/2016

1

Hãy tha thứ cho tôi nếu tôi sai vì tôi sorta mới này, nhưng tôi nhận thấy rằng bạn đánh vần nó như L.Icon với số vốn tôi . Có thể phiên bản mới hơn hoặc một cái gì đó nhưng nó không hoạt động khi tôi đánh vần theo cách đó. L.icon với một nhỏ tôi làm việc tốt cho tôi.

Bạn cũng đã sử dụng tên trường hợp nhỏ trong câu lệnh return.

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.