Почему маркер карты взрывается при первой загрузке? - PullRequest
1 голос
/ 25 ноября 2011

Я использую Google Maps API V3 на стороне сервера и загружаю приложение WebView в GoogleTV. При первой загрузке мое изображение маркера искажается, но если я использую элементы управления масштабированием, оно перезагружается соответствующим образом и пропорционально. Я приложил 2 снимка экрана:

Первая загрузка (неверно): enter image description here

увеличение и уменьшение (правильное);

enter image description here

Вот мое обновлениеПросмотр с центральным URL-адресом:

    private void updateView(){
    Log.i(DEBUG_TAG, " updateView()");

    // added 
    mWebView = (WebView)findViewById(R.id.mapWebView);
    mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
    Double lat = 0.0;
    Double lon = 0.0;
    lat = Double.parseDouble(mWd.getCurrentWeatherDataModel().lat);
    lon = Double.parseDouble(mWd.getCurrentWeatherDataModel().lon);
    final String centerURL = "javascript:mpSetCenter(" + lat + "," + lon + ")";
    if (mWebView != null) {
        mWebView.getSettings().setBuiltInZoomControls(false);
        mWebView.getSettings().setEnableSmoothTransition(true);
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageFinished(WebView view, String url) {
                //mWebView.loadUrl("javascript:setZoomLevel(" + mZoomLevel + ")");
                Log.i(DEBUG_TAG, "onPageFinished() b4 dimiss dialogs");
                Dialogs.dismiss();
                mHandler.removeCallbacks(mRunnable);
                mHandler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        mWebView.loadUrl(centerURL);
                    }
                }, 1000);

                if (mWd.getCurrentWeatherDataModel().overlayOption.equals(RADAR_OVERLAY)) {
                    mIsRadarShowing = true;
                    mIsSatelliteShowing = false;
                } else {
                    mIsRadarShowing = false;
                    mIsSatelliteShowing = true;
                }
                init();
            }

            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                Log.i(DEBUG_TAG, "Error, oh noes! " + description);
            }
        });
        mWebView.setWebChromeClient(new WebChromeClient() {
             @Override
                public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
                 Log.i(DEBUG_TAG, "message in onJsAlert is " + message);
                    result.confirm();
                    return true;
                }
        });
        mWebView.loadUrl("file:///android_asset/maps_v3.html"); 
        Dialogs.dismiss();
        Log.i(DEBUG_TAG, "dismiss b4 this stmnt and showLoadingDialog after");
        Dialogs.showLoadingDialog((android.app.Activity) mContext);
        mHandler.postDelayed(mRunnable, 30000);
    }
}

Есть идеи, почему ??

Вот часть файла js, которая создает маркер:

//Center map on lat/lon of chosen location.
function mpSetCenter(lat, lon) {
    var centerPoint = new google.maps.LatLng(lat, lon);
    clearMarkers();
    map.setCenter(centerPoint);
        var marker = new google.maps.Marker({
      position: centerPoint, 
      map: map
  }); 
  google.maps.event.addListener(marker, 'click', function() {
    map.setCenter(marker.getPosition());
  });
  marker_list.push(marker);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...