Изменить значок на карте с помощью функции JSON - PullRequest
0 голосов
/ 15 октября 2019

У меня есть этот код, который загружает все маркеры на карте

<script>
var my_json;
var icono;

var map = L.map('map').setView([-24.376224,-65.1149885], 14);

L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
    maxZoom: 18,
    attribution: 'Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors'
}).addTo(map);

В feature.geometry.distancia я получаю значок, который мне нужно показать. Если это smallicon или yellow

var smallIcon = new L.Icon({
iconUrl: 'img/marker-icon-blue.png',
iconRetinaUrl: 'img/marker-icon-2x-blue.png',

});

var yellow = new L.Icon({
 iconUrl: 'img/marker-icon-yellow.png',
iconRetinaUrl: 'img/marker-icon-2x-yellow.png',
});

Здесь я могу получить значение из feature.geometry.distancia и поместить его в переменную.

function onEachFeature(feature, layer) {
//console.log(feature);
var empleado="<p><strong>"+feature.properties.empleado+"</strong><br>";
var fecha=feature.properties.fecha+"<br>";
var hora=feature.properties.hora+"</p>";
icono=feature.geometry.distancia;
var popupT=empleado.concat(fecha,hora);

layer.bindPopup(popupT);
}

Я получаю информацию из phpстраница, которая строит JSON, это работает нормально. Я пытаюсь сделать то же самое, что и в функции oneachfeature, но получаю ошибку. Uncaught ReferenceError: функция не определена

$.getJSON('geojsondata.php', function(data) {
console.log(data);
//var iconoactual=feature.geometry.distancia;
L.geoJson(data, {
  pointToLayer: function(feature, latlng) {
    //console.log(latlng, feature);
    var iconoactual=feature.geometry.distancia;

Здесь я получаю значение, но когда я назначаю иконку, я получаю ошибку. leaflet.js: 7 Uncaught TypeError: Невозможно прочитать свойство 'popupAnchor' из неопределенного

    return L.marker(latlng, {
      icon: smallIcon
    });
  },
  onEachFeature: onEachFeature
}).addTo(map);
});

Мой Json

object      {2}
type    :   FeatureCollection
features        [1]
   0        {3}
      type  :   Feature
      geometry      {3}
         type   :   Point
         coordinates        [2]
            0   :   -65.1489465
            1   :   -24.38871095
         distancia  :   yellow
      properties        {10}
         empleado   :   test@gmail.com
         fecha  :   2019-10-14
         hora   :   15:16:00
         empleadoC  :   test@gmail.com-2019-10-14-15:16:00

Я хотел бы, чтобы мой тип значкаэто было в моем json feature.geometry.distancia. Как я могу это сделать? Надеюсь, кто-нибудь может мне помочь с этим. С наилучшими пожеланиями.

1 Ответ

0 голосов
/ 24 октября 2019

Я это исправил вот так

L.geoJson(data, {
      pointToLayer: function(feature, latlng) {
        //console.log(latlng, feature);
        var iconoactual=feature.geometry.distancia;
        console.log (iconoactual);
        if (iconoactual=='yellow'){
          return L.marker(latlng, {
          icon: yellow
        })
        } else {
        return L.marker(latlng, {
          icon: smallIcon
        })
        }
      },
      onEachFeature: onEachFeature
    }).addTo(map);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...