Ciao a tutti, sto cercando di aprire in una WebView di un'Activity Android una pagina html che a sua volta dovrebbe aprire una mappa di google centrata in un determinato punto.
Il problema e' che la mappa non viene visualizzata.
Il codice scritto e' il seguente:
cartella assets del progetto android:
map.html
mapmanage.jscodice:<html> <head> <title>CAR WIDGET HTC</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <meta name="viewport" content="width=device-width, target-densityDpi=device-dpi, user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"/> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> <script type="text/javascript" src="weem/json.js"></script> <script type="text/javascript" src="weem/weem-common.js"></script> <script type="text/javascript" src="weem/weem-cms.js"></script> <script src="mapmanage.js" type="text/javascript"></script> </head> <body onload="start();"> <div id="mapDiv" style="display:block;"> Hello world! </div> </body> </html>
E infine nell'activity android nella onCreate ho implementato il seguente codice:codice:function start() { alert('start'); lat = 45.1113238; lon = 7.6738408; displayGoogleMap(14); insertPIN(); } // funzioni di gestione della mappa function displayGoogleMap(zoomValue) { try { alert('displayGoogleMap'); var pos = new google.maps.LatLng(lat, lon); alert(pos); var myOptions = { zoom: zoomValue, mapTypeId: google.maps.MapTypeId.ROADMAP, center: pos }; googleMap = new google.maps.Map(document.getElementById("mapDiv"), myOptions); } catch (e) { alert("Errore: "+e.message); } } function insertPIN() { alert('insertPIN'); if (myMarker != null && myMarker != 'undefined') { // remove marker myMarker.setMap(null); } var pos = new google.maps.LatLng(lat, lon); myMarker = new google.maps.Marker({ icon: 'img/cars156.gif', map: googleMap, title: '', position: pos }); googleMap.setCenter(pos); }
MyWebView e' la seguente:codice:public void onCreate(Bundle savedInstanceState) { Log.d(TESTER_TAG, "onCreate: start"); super.onCreate(savedInstanceState); setContentView(R.layout.map); try { myWebView = (WebView) findViewById(R.id.webview_compontent); webSettings = myWebView.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE); webSettings.setJavaScriptCanOpenWindowsAutomatically(true); webSettings.setLoadsImagesAutomatically(true); myWebView.setWebViewClient(new MyWebView(this)); myWebView.setWebChromeClient(new WebChromeClient()); myWebView.loadUrl("file:///android_asset/map.html"); } catch (Exception e) { Log.d(TESTER_TAG, "onCreate: WebView error: "+e.toString()); } }
e in map.xml ho definito la WebView nel seguente modo:codice:public class MyWebView extends WebViewClient { /** application context: it allows to gain access to activity object */ protected Context context; /** * CONSTRUCTOR */ public MyWebView (Context _context) { super(); this.context = _context; } }
Eseguendo l'applicazione vedo gli alert delle funzioni javascript ma la mappa non viene visualizzata, a volte compare per un brevissimo tempo l'inizio della mappa in alto ma sparisce subito!codice:<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffffffff" > <WebView android:id="@+id/webview_compontent" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1.0" /> </LinearLayout>
Cosa sto sbagliando?
Grazie e ciao
Sandro

Rispondi quotando