最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

android - Google Maps Javascript API mobile performance issue - Stack Overflow

programmeradmin2浏览0评论

I'm trying to build a mobile application using Google Maps Javascript API v3. Functionally, it's doing fine, but the performance is really sluggish on middleware Android devices (used Samsung Galaxy 3 for testing). I also checked the performance on the official , had the same result, and using the first example code as well. Is there any mobile specific step, I might have missed (see the example code), or the Javascript API performance is limited to this level, and building a native application cannot be avoided in this case?

Thank you very much for the answers!

Here is the code of the linked page:

<!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=";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>

I'm trying to build a mobile application using Google Maps Javascript API v3. Functionally, it's doing fine, but the performance is really sluggish on middleware Android devices (used Samsung Galaxy 3 for testing). I also checked the performance on the official http://maps.google., had the same result, and using the first example code as well. Is there any mobile specific step, I might have missed (see the example code), or the Javascript API performance is limited to this level, and building a native application cannot be avoided in this case?

Thank you very much for the answers!

Here is the code of the linked page:

<!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./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>
Share Improve this question asked Jan 13, 2012 at 13:09 ZenimaZenima 3902 silver badges14 bronze badges 6
  • would love to see some sort of answer on this one! – Randy L Commented Jun 23, 2012 at 9:09
  • Did you try putting your script and the bottom? – Ashwin Singh Commented Jun 25, 2012 at 13:53
  • I don't think it's possible to have a performance as good as a native app using it, but I can't prove that to you. It's more like an opinion than an answer. Good luck with that! :) – Leaudro Commented Jun 26, 2012 at 14:12
  • 2 Perhaps this can be of help: stackoverflow./questions/875678/… – Gunnar Karlsson Commented Jun 27, 2012 at 17:37
  • 1 When you say performance is bad, is it that it takes too much time to load or once loaded, the interactions are sluggish? – iwiznia Commented Jun 28, 2012 at 18:02
 |  Show 1 more ment

2 Answers 2

Reset to default 9 +75

As per official documentation, your code is right. And maps is optimized.

I suggest:

  1. Try to change the script URL to http://maps.googleapis./maps/api/js?sensor=false
  2. Load scripts at end of page.

Example:

<!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./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>

Try the demo out at http://fiddle.jshell/tomasdev/8FhYz/show/light/ — I'm in doubt regarding your device. If official demos work slow, I don't think there is a quite good solution.

Google maps performance is VERY MUCH dependant on how well structured the whole page is.

The biggest performance hit usually es from repaint/render cycles of the page - caused by the tiles loading / unloading.

Dependant on how the map is placed and how you use it, it's a benefit to position the map element using position:fixed, taking it out of the document flow. Position:absolute can also help, but not as much as 'fixed'.

发布评论

评论列表(0)

  1. 暂无评论