【问题标题】:google map displayed not completely in android tablet谷歌地图显示不完全在 android 平板电脑
【发布时间】:2012-09-11 09:08:30
【问题描述】:

我正在尝试将谷歌地图添加到我的 android 平板电脑以检测终端的位置。但地图未完全显示。只显示了一小部分。并且旋转屏幕后可以完美显示。 我都是按照http://www.digitalnoiz.com/mobile-development/geolocation-jquery-mobile-maps/做的 这是我的html代码:

 <head>
        <link href='stylesheets/jquery.mobile-1.1.0.css' rel='stylesheet' />
        <link href='stylesheets/my.css' rel='stylesheet' />
        <script charset='utf-8' src='javascripts/jquery/jquery-1.7.1.min.js' type='text/javascript'></script>
        <script charset='utf-8' src='javascripts/jquery.ui.map.min.js' type='text/javascript'></script>
        <script charset='utf-8' src='http://maps.google.com/maps/api/js?sensor=true' type='text/javascript'></script>
        <script charset='utf-8' src='javascripts/application.js' type='text/javascript'></script>
        <script charset='utf-8' src='javascripts/jquery/jquery.mobile-1.1.1.js' type='text/javascript'></script>
    <script type="text/javascript" charset="utf-8" src="javascripts/phonegap/cordova-2.0.0.js"><\/script>
    </head>
    <body>
     <!-- Diagnostic -->
        <div data-role='page' id='diagnostic_page'>
          <div data-position='inline' data-role='header' data-theme='a'>
            <h2>
              Diagnostic
            </h2>
            <a data-icon='arrow-l' href='#index_page'>
              Back
            </a>
            <a data-role='button' href='#diagnostic_page' id='PageRefresh'>
              Refresh
            </a>
          </div>
          <div data-role='content' style='padding: 15px'>
            <ul data-divider-theme='a' data-inset='true' data-role='listview'>
             <!--there are some other list variables-->
              <li data-theme='c'>
                Show current location:
                <a class='classspan' href='#location_page'>
                  Click on me
                </a>
              </li>
            </ul>
          </div>
        </div>
        <!-- show current location -->
        <div data-role='page' data-theme='c' id='location_page'>
          <div data-position='fixed' data-role='header' data-theme='a'>
            <a data-icon='arrow-l' href='#diagnostic_page'>
              Back
            </a>
            <h2>
              DigitalNoiz
            </h2>
            <div data-role='header'></div>
            Geolocation
            <div id='map_canvas'></div>
            <div id='geolocation'></div>
          </div>
        </div>
     </body>

这是我的 Jquery 代码,我所有的函数代码都在 application.js 中编辑。

function onLoad() {
    console.log('Init reached');
    $.mobile.allowCrossDomainPages = true;
    $.mobile.showPageLoadingMsg();
    $.support.cors = true;
    document.addEventListener('deviceready', onDeviceReady, false);
}
function onDeviceReady() {
    console.log('Starting up...');
//  navigator.app.overrideBackbutton(true);
    document.addEventListener("backbutton", onBackKeyDown, false);
    console.log('Initializing db'); 
    refreshpage();
        getPosition();

}
function getPosition(){
    var geoOptions = { enableHighAccuracy: true, timeout: 10000 };
    navigator.geolocation.getCurrentPosition(function(position){ // geoSuccess
        // we have the position
        var geolocation = $('#geolocation');
        geolocation.html('<table></table>');

        var table = geolocation.find('table');
        if(position.coords.latitude)
            table.append('<tr><th>Latitude</th><td>' + position.coords.latitude + '</td></tr>');
        if(position.coords.longitude)
            table.append('<tr><th>Longitude</th><td>' + position.coords.longitude + '</td></tr>');
        if(position.coords.altitude)
            table.append('<tr><th>Altitude</th><td>' + position.coords.altitude + '</td></tr>');
        if(position.coords.accuracy)
            table.append('<tr><th>Accuracy</th><td>' + position.coords.accuracy + '</td></tr>');
        if(position.coords.altitudeAccuracy)
            table.append('<tr><th>Altitude Accuracy</th><td>' + position.coords.altitudeAccuracy + '</td></tr>');
        if(position.coords.heading)
            table.append('<tr><th>Heading</th><td>' + position.coords.heading + '</td></tr>');
        if(position.coords.speed)
            table.append('<tr><th>Speed</th><td>' + position.coords.speed + '</td></tr>');
        if(position.coords.timestamp)
            table.append('<tr><th>Timestamp</th><td>' + new Date(position.timestamp) + '</td></tr>');

         //show position on map 
        var map_canvas = $('#map_canvas');
        map_canvas.gmap(
            {'center' : position.coords.latitude + ',' + position.coords.longitude,
            'zoom' : 12,
            'disableDefaultUI':true,
            'callback':function(){
                var self = this; 
                var marker = self.addMarker({ 'position' : this.get('map').getCenter() });
                marker.click(function(){
                    self.openInfoWindow({ 'content' : 'This is your current location' }, this);
                });
            }
        }); 
    }, function(error){ // geoError
        navigator.notification.alert('error: ' + error.message + '\n' + 'code: ' + error.code);
    }, geoOptions);
}

谁能给我一些建议?

【问题讨论】:

    标签: android html google-maps cordova jquery-mobile


    【解决方案1】:

    我也有这个问题(尤其是在桌面上的 Chrome 中),并通过在地图完成渲染(处于“空闲”状态)时调整地图大小来解决它:

    google.maps.event.addListenerOnce(map, 'idle', function() {
       google.maps.event.trigger(map, 'resize');
    });
    

    【讨论】:

      【解决方案2】:

      给你的地图 div 一个尺寸(宽度和高度):

      <div id='map_canvas' style="width:400px; height:500px"></div>
      

      【讨论】:

      • 我给了我的 div 一个尺寸 #map_canvas{ width: 100%;高度:600px;边距底部:10px; } 但它仍然有效。
      • 不是百分比!宽度:什么的 100%?
      • 100% 的屏幕。我希望地图即使被渲染也能适应屏幕。
      • 使用百分比的唯一方法是如果所有祖先节点都有一个大小,一直到 。如果固定的像素大小没有帮助,那么查看 .css 文件的内容可能会很有用。这些文件中的某些内容可能会覆盖像素大小。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-20
      • 2013-06-13
      • 1970-01-01
      相关资源
      最近更新 更多