html5 google map

<link href="http://fonts.googleapis.com/css?family=Droid+Sans|Droid+Sans+Mono" rel="stylesheet" type="text/css" />
 <style>
            #wmap {
              height: 200px;
              width:900px;
            }
            #w-loading {
              visibility: hidden;
              display: inline;
              background-color: red;
              color: white;
              padding: 5px;
              border-radius: 5px;
            }
          </style>

<div id="w-wrapper">
          <div id="wmap" class="gmap example">
            <img src="http://maps.google.com/maps/api/staticmap?center=13,13&zoom=3&size=680x200&sensor=false"/>
          </div>
          <div style="margin-top:5px">
            <button id="find-route-y">Find route with Workers</button>
            <button id="find-route-n">Find route without Workers</button>
            <p id="w-loading">Loading Route...</p>
          </div>
          <p style="font-size: 90%;" class="center">Try dragging the map while the complex route is being calculated (you will only be able to do that with Workers!)</p>
        </div>
        <script src="src/webworkers/points.js" defer></script>
        <script src="src/webworkers/annealing.js" defer></script>
        <script defer>
        (function() {
          var markersArray = [];
          var map = null;
          var useThreads = false;
 
          document.querySelector('#w-wrapper').addEventListener('click', function(event) {
            if (!map) {
              map = new google.maps.Map(document.querySelector('#wmap'), {
                zoom: 3,
                center: new google.maps.LatLng(13, 13),
                mapTypeId: google.maps.MapTypeId.ROADMAP
              });
              map.getDiv().style.border =  '1px solid #ccc';
              drawPoints();
            }
 
            if (event.target.id == 'find-route-y') {
              useThreads = true;
              document.querySelector('#w-loading').style.visibility = 'visible';
              test();
            } else if (event.target.id == 'find-route-n'){
              useThreads = false;
              document.querySelector('#w-loading').style.visibility = 'visible';
              // this setTimout is so that we see the 'loading' label
              setTimeout(function() { test(); }, 10);
            }
          }, false);
 
          function drawPath(path) {
            var firstPoint = true;
            var l = p1.length;
            var scaleFactor = 5;
            for (var i = 0; i < l - 1; ++i) {
              var points = [
                new google.maps.LatLng(p1[i].x / scaleFactor,
                                       p1[i].y / scaleFactor),
                new google.maps.LatLng(p1[i + 1].x / scaleFactor,
                                       p1[i + 1].y / scaleFactor)
              ];
              var polyline = new google.maps.Polyline(
                  {path: points, strokeColor: '#ff0000', strokeWeight: 1});
              markersArray.push(polyline);
              polyline.setMap(map);
            }
          }
 
          function drawPoints() {
            var blueIcon = new google.maps.MarkerImage(
                'src/webworkers/point.png',
                new google.maps.Size(3, 3), // size
                new google.maps.Point(0, 0), // origin
                new google.maps.Point(0, 0)); // anchor
            for (var i = 0; i < p1.length; ++i) {
              // Render in Gmap instead of canvas
              var point = new google.maps.LatLng(p1[i].x / 5, p1[i].y / 5);
              var marker = new google.maps.Marker({
                  position: point, icon: blueIcon, map: map});
              markersArray.push(marker);
            }
          }
 
          function deleteOverlays() {
            if (markersArray) {
              for (var i in markersArray) {
                markersArray[i].setMap(null);
              }
              markersArray = [];
            }
          }
 
          function test() {
            var name = "Test 1";
            var self = this;
            deleteOverlays();
            drawPoints();
            setTimeout(function() {
              var opts = {
                points: p1,
                t0: 1,
                g: 0.99,
                stepsPerT: 10
              };
              var callback = {
                name: name,
                newMin: function(p) {
                },
                draw: function(p) {
                  document.querySelector('#w-loading').style.visibility = 'hidden';
                  drawPath(p);
                }
              };
              var a;
              if (useThreads) {
                var worker = new Worker('src/webworkers/Worker.js')
                worker.onmessage = function(event) {
                  var returnedData = JSON.parse(event.data);
                  var msg = returnedData[0];
                  var p = returnedData[1];
                  callback[msg](p);
                };
                worker.onerror = function(event) {
                  console.log(event);
                };
                worker.postMessage(JSON.stringify({
                  opts: opts,
                  width: 200,
                  height: 200
                }));
              } else {
                var annealing = new Annealing();
                var callback2 = {
                  onNewMin: function(p) {
                    // postMessage('newmin')
                  },
                  onDone: function(p) {
                    document.querySelector('#w-loading').style.visibility = 'hidden';
                    drawPath(p);
                  }
                };
                annealing.init(opts, opts.width, opts.height, callback2);
                annealing.go();
              }
            }, 10);
          }
        })();
        </script>
        </section>
        </div>
    <script src="http://maps.google.com/maps/api/js?sensor=true"></script>
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值