2016-04-27 2 views
0

Я пытаюсь показать маркеры на карте в открытом слое 3. Ниже приведен код, который я использовал. Может ли кто-нибудь помочь мне найти проблему, поскольку на данной позиции не отображается значок.Как показать маркер в Open layer 3

var app = angular.module('Openlayers', []); 

//The list of points to be connected 
var dataSource1 = [{ 
    "title": 'Duero', 
    "lat": '40.480243', 
    "lng": '-3.866172', 
    "description": 'This is Duero' 
}, { 
    "title": 'Reyes Catolicos', 
    "lat": '49.47806', 
    "lng": '-1.870937', 
    "description": 'This is Reyes Catolicos' 
}, { 
    "title": 'Guadarrama', 
    "lat": '58.478998', 
    "lng": '-2.878755', 
    "description": 'This is Guadarrama' 
}]; 

var defaultIconPath = 'images/location.jpg'; 
var centerPosition = dataSource1[1]; 
var vehicleIconpath = 'images/vehicle.ico'; 

Я использовал ниже вызова для вызова метода:

$scope.populateMarkers($scope.dataPoints, defaultIconPath); 



$scope.populateMarkers = function (data, iconPath) { 
     var features = []; 

     angular.forEach(data, function (value, key) { 
      debugger; 

      var iconFeature = new ol.Feature({ 
       geometry: new ol.geom.Point(ol.proj.transform([value.lng, value.lat], 'EPSG:4326', 
       'EPSG:3857')) 
      }); 


      var iconStyle = new ol.style.Style({ 
       image: new ol.style.Icon(({ 
        anchor: [0.5, 46], 
        anchorXUnits: 'fraction', 
        anchorYUnits: 'pixels', 
        opacity: 0.75, 
        src: iconPath 
       })) 
      }); 

      iconFeature.setStyle(iconStyle); 
      features.push(iconFeature); 
     }); 
     var vectorSource = new ol.source.Vector({ 
      features: features 
     }); 

     var vectorLayer = new ol.layer.Vector({ 
      source: vectorSource 
     }); 

     map.addLayer(vectorLayer); 
    } 
+0

Код сам по себе уместен. Первой идеей является «iconPath». Вы даже инициализировали его? Попробуйте удалить его, чтобы увидеть, отображается ли маркер по умолчанию. А также попробуйте масштабирование для всего мира. возможно, согласны. –

+0

Да, у меня есть инициализированный путь значка. В отладке я это вижу. Но все же я попытался удалить это, но он также не отображал значок по умолчанию. Я изменил вопрос более подробно – user1770461

ответ

1

OpenLayers не нравится, когда данные в неправильном формате.
Ваши координаты должны быть NUMERIC, но теперь это строки. Вобще:

var iconFeature = new ol.Feature({ 
    geometry: new ol.geom.Point(ol.proj.transform([parseFloat(value.lng), parseFloat(value.lat)], 'EPSG:4326', 'EPSG:3857')) 
}); 

разобрать их, чтобы плавать, и вы будете в порядке.

Смежные вопросы