В настоящее время я работаю над проектом, использующим angular, mongodb nodejs и листовку.
Я пытался реализовать различные методы для вызова новых маркеров, но мне это не удалось. Мое намерение состоит в том, чтобы при увеличении масштаба или перемещении карты обнаруживать новые значения в положении карты (coordinatesPub
) и отправлять эти значения в API для возврата массивов (публикаций), расположенных в пределах значений coordinatespub
(каждая публикация имеетположение по долготе и широте в дополнение к другим значениям) Однако я не могу отправить новые значения coordinatespub
в API, когда выполняю moovend и удаляю предыдущие.
Я искренне имеюмало знаний (я начинаю с этого), я был с этой проблемой в течение нескольких дней, не имея возможности ее решить. Я хотел бы, чтобы кто-то мог помочь мне, я был бы очень благодаренty
CLIENT
ngOnInit(){
var map2 = new L.Map('map2', { 'center': [20.291, -102.191], 'zoom': 5});
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© OpenStreetMap contributors'}).addTo(map2);
var west = map2.getBounds().getWest();
var east = map2.getBounds().getEast();
var south = map2.getBounds().getSouth();
var north = map2.getBounds().getNorth();
var coordinatesPub = {west, east, north, south};
map2.on('moveend', function() {
var west = map2.getBounds().getWest();
var east = map2.getBounds().getEast();
var south = map2.getBounds().getSouth();
var north = map2.getBounds().getNorth();
var coordinatesPub = {west, east, north, south};
});
this._publicationService.getPublicationMap(coordinatesPub).subscribe(
response => {
if(response.publications){
this.publications = response.publications;
this.publications.forEach((publication) => {
// create popup contents
var customPopup = '<div>' + '<img src =' + this.url + 'get-image-pub/' + publication.file + '/>' + '</div>' + '<p>' + publication.titulo + '</p>' + '<p>' + "$ " + publication.price + '</p>' ;
// specify popup options
var customOptions = {
'maxWidth': '200',
'minWidth': '130',
'className' : 'popupCustom' }
var marker = L.marker([publication.latitude, publication.longitude], {draggable: false
}).addTo(map2).bindPopup(customPopup,customOptions);
});
}else{
this.status = 'error';
}
},
error => {
console.log(<any>error);
}
);
}
API
function getPublicationMap(req, res){
var params = req.body;
Publication.find({ $and: [{latitude: {$gt: params.south}}, {latitude: {$lt: params.north}}, {longitude: {$gt: params.west}}, {longitude: {$lt: params.east}} ]}, (err, publications) =>{
if(err) return res.status(500).send({message: 'Error al devolver la publicacion'});
if(!publications) return res.status(404).send({message: 'No existen publicaciones'});
return res.status(200).send({publications});
});
}
Я пытался приспособить свой код и максимально удалить ненужный код. Я надеюсь, что вы можете помочь мне