我试图让对象在地图上可见,我收到错误“未捕获的错误:geometry.component.pixelContains:要计算点的出现,必须将几何图形添加到地图中。”。怎么修?YM API 的新手。
几个城市的标签,首先我设置地图的中心,以便所有标签都适合,如果启用了地理定位,我会根据用户的位置将地图居中。我正在尝试制作第二个 setBounds,以便所有当前可见的点都适合地图。
//prepare variables
let placemarks = [];
//add map
let myMap = new ymaps.Map("yamap", {
center: [0,0],
zoom: 11
},{
autoFitToViewport: 'always'
});
//get all warehouses from the left list
let els = $('.shlist .whitem');
els = els.length > 0 ? els : $('.whcont .whitem');
//iterate over warehouses, add a placemark for each one
els.each(function(){
//prepare variables
let eid = $(this).attr('data-id');
let coord = $(this).attr('data-coord').split(',');
//add placemark
let myPlacemark = new ymaps.Placemark([coord[0],coord[1]],{},{
id: eid,
iconLayout: 'default#image',
iconImageHref: thmeurl+'/img/placemark.svg',
iconImageSize: [25,30],
iconImageOffset: [-12, -21]
});
myMap.geoObjects.add(myPlacemark);
placemarks[eid] = (myPlacemark);
});
//center the map to show all placemarks
myMap.setBounds(myMap.geoObjects.getBounds(),{checkZoomRange:true, zoomMargin:9});
//ig geolocation is on, center map on user's location
ymaps.geolocation.get({}).then(function(result){
let crd = result.geoObjects.get(0).geometry.getCoordinates();
myMap.setCenter(crd, 10);
}, function(){
myMap.setBounds(myMap.geoObjects.getBounds(),{checkZoomRange:true, zoomMargin:9});
});
//get visible objects
//выдает ошибку "Uncaught Error: geometry.component.pixelContains: Для рассчета вхождения точки геометрия должна быть добавлена на карту."
let visibleGeoObjects = ymaps.geoQuery(myMap.geoObjects).searchIntersect(myMap.getBounds());
console.log(visibleGeoObjects);
必须使用geoQuery函数创建地图对象,如本例所示。那么就可以通过这种方式获取可见对象的列表: