Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

181
Vistas
Agregar superposición a MKMapView usando OpenWeatherMap (Swift)

No tengo idea por donde empezar.

Aquí está la documentación: https://openweathermap.org/api/weathermaps

Después de eso, y buscando lo que pude en línea, intenté lo siguiente, pero me da un error fatal y nunca pasa de eso. (Nota: tampoco estoy seguro de qué poner para los valores z, x e y, así que los dejé, además de mi clave API, en blanco aquí, pero en mi código solo puse 1/1/1) Mi intento, insertando temp_new para recibir la superposición de temperatura:

 Service.shared.getInfoCompletionHandler(requestURL: "https://tile.openweathermap.org/map/temp_new/{z}/{x}/{y}.png?appid={myKey}") { data in if let data = data{ var geoJson = [MKGeoJSONObject]() do{ geoJson = try MKGeoJSONDecoder().decode(data) } catch{ fatalError("Could not decode GeoJson") } var overlays = [MKOverlay]() for item in geoJson{ if let feature = item as? MKGeoJSONFeature{ for geo in feature.geometry{ if let polygon = geo as? MKPolygon{ overlays.append(polygon) } } } } DispatchQueue.main.async { [unowned self] in //set to global variable self.overlays = overlays } } }

Mi proceso de pensamiento fue simplemente extraer las superposiciones y luego agregarlas a MKMapView de esta manera:

 mapView.addOverlays(self.overlays)

Si es relevante, este es el controlador de finalización que tengo en mi Service.swift para realizar la llamada a la API:

 //Get Info API func getInfoCompletionHandler(requestURL: String, completion: @escaping (Data?)->Void){ guard let url = URL(string: requestURL) else {return} URLSession.shared.dataTask(with: url) { data, response, error in if error == nil { if let data = String(data: data!, encoding: .utf8), let response = response{ print(data) print(response) } } else{ if let error = error { print(error) } } completion(data) }.resume()

¿Estoy en el camino correcto?

¡Cualquier ayuda se agradece, gracias!

EDITAR:

Después de jugar, noté que simplemente puedo analizar los datos como imageData con el siguiente código:

clase ViewController: UIViewController {

 //Properties var imgData = Data() let imageView = UIImageView() override func viewDidLoad() { super.viewDidLoad() //imageView frame view.addSubview(imageView) imageView.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.width) imageView.center = view.center imageView.contentMode = .scaleAspectFit //image string let imgString = "https://tile.openweathermap.org/map/temp_new/0/0/0.png?appid={myKey}" //convert string to url object (needed to decode image data) let imgUrl = URL(string: imgString) //convert url to data self.imgData = try! Data(contentsOf: imgUrl!) //set to imageView self.imageView.image = UIImage(data: self.imgData) } }

Dándome este resultado:

ingrese la descripción de la imagen aquí

Entonces, ahora la única pregunta que queda es ¿cómo agrego este imageView como una superposición en mapView?

over 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda