Итак, мне нужно обновить некоторые коды TypeScript, написанные ранее, используя setTimeout вместо Callbacks, проблема в том, что я не могу заставить его работать должным образом.
Функция, использующая settimeouts, работает, поэтому нет причин для настройки (библиотеки = места и т. Д.). Кроме того, в журналах я вижу, что он действительно работает, но моя карта просто серая.
map_initialize(callback) {
navigator.geolocation.getCurrentPosition((position) => {
this.directionsService = new google.maps.DirectionsService();
this.localizacaoAtual = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
var mapOptions = {
zoom: 8,
center: this.localizacaoAtual
}
if (this.origem == "atual") {
this.origem = this.localizacaoAtual;
}
callback({ mapOptions: mapOptions })
});
}
Теперь я собираюсь вызвать функцию initialize
if (this.origem != null && this.destino != null) {
this.map_initialize((callback) => {
if (this.tipoMapa == "rota") {
this.map_calcRoute(callback);
} else if (this.tipoMapa == "radius") {
this.map_radius(callback);
}
});
}
Первая функция, которая вызывается if, это карта маршрута, которая фактически работает. Но если я изменю значение this.tipoMapa на radius, оно не будет загружено.
map_radius(mapOptions: any) {
this.map = new google.maps.Map(document.getElementById('map'), mapOptions);
let service = new google.maps.places.PlacesService(this.map);
let start = this.origem;
let end = this.destino;
this.request = {
location: start,
radius: '1500',
name: ['something here']
}
service.nearbySearch(this.request, (results, status) => {
if (status === google.maps.places.PlacesServiceStatus.OK) {
var stepDisplay: any = new google.maps.InfoWindow();
for (var i = 0; i < results.length; i++) {
this.createMarker(results[i], stepDisplay);
}
}
this.entrada = { mensagem: status, origem: this.origem, destino: this.destino, instrucoes: this.instrucoes };
this.conversationService.sendMessage(this.entrada, this.context).subscribe(
data => {
this.conv_tratarRetorno(data);
}, error => { }
)
});
};
А потом у меня есть функция createMarker.
createMarker(place, stepdisp) {
var marker = new google.maps.Marker({
map: this.map,
position: place.geometry.location
});
google.maps.event.addListener(marker, 'click', function () {
stepdisp.setContent(place.name);
stepdisp.open(this.map, marker);
});
}
Так что, в основном, когда я вызываю функцию маршрута, она работает так же, как и на самом деле, но если я вызываю функцию радиуса, она возвращает серую карту, но с правильными журналами.
Заранее спасибо!