2017-01-16 60 views
5

Używam WKWebView do wyświetlania map Google w mojej aplikacji. Jest to adres URL: http://ec2-54-198-148-171.compute-1.amazonaws.com/map_question.htmlWebView zmienia kolor na biały/pusty

Poniżej znajduje się kod, aby wyświetlić WKWebView w App:

import UIKit 
import WebKit 
import Foundation 
class MyMapController: UIViewController, UIScrollViewDelegate, WKScriptMessageHandler { 
var webViewGeo: WKWebView? 
var WidgetView:UIView = UIView() 

    override func loadView() { 
    super.loadView() 

    let contentController = WKUserContentController();  
    contentController.addScriptMessageHandler(
     self, 
     name: "callbackHandler" 
    ) 


    let config = WKWebViewConfiguration() 
    config.userContentController = contentController 


    self.webViewGeo = WKWebView(
     frame: self.WidgetView.bounds, 
     configuration: config 
    ) 
    self.WidgetView = self.webViewGeo!  
} 



override func viewDidLoad() { 
     super.viewDidLoad()  
     let frame = CGRect(x:0, y:-20, width:self.view.bounds.width, height:self.view.bounds.width) 
     WidgetView.frame=frame  
     let url = NSURL(string:"http://ec2-54-198-148-171.compute-1.amazonaws.com/map_question.html") 
     let req = NSURLRequest(URL:url!) 
     self.webViewGeo!.loadRequest(req) 
     self.view.addSubview(WidgetView)    
    } 

} 

Problem jest, gdy próbuję wchodzić w interakcje z mapą jak zoom in zoom out lub przewijanie wtedy moją mapę w aplikacji staje się biały. Mapa działa poprawnie w przeglądarce internetowej bez wyświetlania białego ekranu.

Czy istnieje sposób na poznanie problemu za tym stojącego? Jak naprawić ten problem?

+0

że mapa nawet spowalnia mój komputer; Nie zastanawiam się, czy biedny iOS też nie poradzi sobie z tym w czasie rzeczywistym. – holex

+4

"Używam WKWebView do wyświetlania map Google w mojej aplikacji", ale Google daje Ci do tego API. Dlaczego zamiast tego użyć tego? – matt

+0

Musiałem użyć warstwy warstwy i danych warstwy fusion. Nie są one dostępne w wersji Mapy Google na iOS. – dang

Odpowiedz

5

Problem nie jest w WKWebView, link próbujesz załadować ma 2k markerów, które przeciążają MapView nawet w przeglądarce Chrome na komputerze, i to jest źródłem problemu.

Jednym z możliwych rozwiązań jest dodanie Marker Clustering do kodu html/javascript. Możesz dodać official google maps documentation, aby go dodać.

Oficjalne repozytorium bibliotek klastra znaczników Google to here.