jQuery MobileでGoogleMap APIを使ったサンプルがMITライセンスで公開されてた

Ads

なかなかいいサンプルだったのでシェア。
jQuery MobileでGoogleMap APIを使った
サンプルがオープンソースで公開されて
いました。ストリートビューなども表示する
ことが可能です。興味の有る方はチェック
してみては。

スマフォにGoogleMapを表示させるのに、Google Maps JavaScript API V3が必要みたいですが、これをスマフォ対応を簡略化するjQueryプラグイン、jQuery Mobileで使おう、というもの。

jquery-ui-map


GoogleMap APIをjQuery Mobileで使ったサンプルです。jquery-ui-mapというプラグインも使用しています。このサンプルはMITライセンスでソースが公開されていますよ。

以下、デモのキャプチャです。

iPhone


iPhoneでの実装状態です。


ランドスケープ時も自動で横幅をあわせてくれます。


ストリートビューも問題なく表示。PCサイト同様、人アイコンを移動させればOKです。


位置の取得も可能。


ルート検索。

iPadで同じページにアクセスしてみました。

iPad


普通に表示できました。


ストリートビューもOK。iPadだと凄くいい感じです。


航空写真も表示できます。ランドスケープも綺麗に表示できました。

コード

<script src="http://www.google.com/jsapi?key=******" type="text/javascript"></script>       
    <script type="text/javascript">
  google.load("maps", "3", {'other_params':'sensor=true'});
  google.load("jquery", "1.5");
</script>
<script type="text/javascript">
  // Demonstration purpose only...
  $(document).bind("mobileinit", function () {
    $.mobile.ajaxEnabled  = true;
  });
</script>
<script type="text/javascript" src="http://code.jquery.com/mobile/1.0a4/jquery.mobile-1.0a4.min.js"></script>
<script type="text/javascript" src="../ui/jquery.ui.map.js"></script>

必要なファイルなんかを読み込みます。

で、地図を表示させたいところに

<script type="text/javascript">
  $('#gmap-2').live("pageshow", function() {
    $('#map_canvas').gmap({'center': getLatLng(), 'callback': function() {
        $('#map_canvas').gmap('addMarker', {'position': getLatLng(), 'animation': google.maps.Animation.DROP, 'title': 'Hello world!'}, function(map, marker) {
          $('#map_canvas').gmap('addInfoWindow', { 'position':marker.getPosition(), 'content': 'Hello world!' }, function(iw) {
            $(marker).click(function() {
                iw.open(map, marker);
                map.panTo(marker.getPosition());
            });
          });
        });
      }
    });
    function getLatLng() {
      if ( google.loader.ClientLocation != null ) {
        return new google.maps.LatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude); 
      }
      return new google.maps.LatLng(59.3426606750, 18.0736160278);
    }
  });
</script>
 
<div data-role="content">
           
  <div class="ui-bar-c ui-corner-all ui-shadow" style="padding:1em;">
    <div id="map_canvas" style="height:300px;"></div>
  </div>

こんな感じで書けばいいみたいです。

表示や使い勝手はWebのGoogleMapと同じ感覚で使えるんですが、とにかく重い。jQuery Mobile自体アレなので余計に、という気もします。今後は表示速度が課題になりそうですね。でも知って置いて損は無いサンプルだと思いました。

以下でデモの確認とサンプルファイルのダウンロードが可能です。

ダウンロード:jquery-ui-map
ドキュメント:jQuery Mobile Plugin for Google Maps: Route Finder App
動作デモ※別窓:Demo