Google Maps Javascript API 移动性能问题

Posted

技术标签:

【中文标题】Google Maps Javascript API 移动性能问题【英文标题】:Google Maps Javascript API mobile performance issue 【发布时间】:2012-02-09 16:30:08 【问题描述】:

我正在尝试使用 Google Maps javascript API v3 构建移动应用程序。在功能上,它表现不错,但在中间件 android 设备上性能确实很慢(使用三星 Galaxy 3 进行测试)。 我还检查了官方http://maps.google.com 的性能,得到了相同的结果,并且也使用了first example code。是否有任何移动特定的步骤,我可能错过了(参见示例代码),或者 Javascript API 性能仅限于此级别,在这种情况下无法避免构建原生应用程序?

非常感谢您的回答!

这是链接页面的代码:

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <style type="text/css">
      html  height: 100% 
      body  height: 100%; margin: 0; padding: 0 
      #map_canvas  height: 100% 
    </style>
    <script type="text/javascript"
      src="http://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&sensor=SET_TO_TRUE_OR_FALSE">
    </script>
    <script type="text/javascript">
      function initialize() 
        var myOptions = 
          center: new google.maps.LatLng(-34.397, 150.644),
          zoom: 8,
          mapTypeId: google.maps.MapTypeId.ROADMAP
        ;
        var map = new google.maps.Map(document.getElementById("map_canvas"),
            myOptions);
      
    </script>
  </head>
  <body onload="initialize()">
    <div id="map_canvas" style="width:100%; height:100%"></div>
  </body>
</html>

【问题讨论】:

很想在这个问题上看到某种答案! 你试过把你的脚本和底部放在一起吗? 我认为使用它的本机应用程序的性能是不可能的,但我无法向你证明这一点。这更像是一个意见而不是一个答案。祝你好运! :) 也许这会有所帮助:***.com/questions/875678/… 当你说性能不好时,是加载时间太长还是加载后交互迟缓? 【参考方案1】:

根据official documentation,您的代码是正确的。并且地图已经过优化。

我建议:

    尝试将脚本 URL 更改为http://maps.googleapis.com/maps/api/js?sensor=false 在页面末尾加载脚本。

例子:

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <style type="text/css">
      html  height: 100% 
      body  height: 100%; margin: 0; padding: 0 
      #map_canvas  height: 100%; width: 100%; 
    </style>
  </head>
  <body>
    <div id="map_canvas"></div>
    <script src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
    <script>
      function initialize() 
        var myOptions = 
          center: new google.maps.LatLng(-34.397, 150.644),
          zoom: 8,
          mapTypeId: google.maps.MapTypeId.ROADMAP
        ;
        var map = new google.maps.Map(document.getElementById("map_canvas"),
            myOptions);
      
      google.maps.event.addDomListener(window, 'load', initialize);
    </script>
  </body>
</html>

在http://fiddle.jshell.net/tomasdev/8FhYz/show/light/ 上试用演示 - 我对您的设备有疑问。如果官方demo运行缓慢,我认为没有一个很好的解决方案。

【讨论】:

【参考方案2】:

Google 地图的性能在很大程度上取决于整个页面的结构。

最大的性能损失通常来自页面的重绘/渲染周期 - 由图块加载/卸载引起。

根据地图的放置方式和使用方式,使用 position:fixed 定位地图元素是有好处的,将其从文档流中取出。 Position:absolute 也有帮助,但不如“固定”。

【讨论】:

以上是关于Google Maps Javascript API 移动性能问题的主要内容,如果未能解决你的问题,请参考以下文章

在 typescript/javascript 的 google.maps.Geocoder().geocode() 上使用全局变量

JavaScript Google Maps API

Google Maps JavaScript API 警告:NoApiKeys

Google Maps Javascript API、DirectionsService、国家列表

Google Maps Javascript API 移动性能问题

具有自动完成功能的 Google Maps JavaScript API