Jquery-mobile-jqm-map-popup

提供:Dev Guides
移動先:案内検索

jQuery Mobile-マップポップアップ

説明

*_iframe_* 要素を使用して、Google Maps APIを指定できます。

次の例は、jQuery Mobileフレームワークでの_map popup_の使用を示しています。

<!DOCTYPE html>
   <head>
      <title>Map Popup</title>
      <meta name = "viewport" content = "width = device-width, initial-scale = 1">
      <link rel = "stylesheet" href = "https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css">
      <script src = "https://code.jquery.com/jquery-1.11.3.min.js"></script>
      <script src = "https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>

      <script>
         $( document ).on( "pagecreate", function() {

            function scale( width, height, padding, border ) {
               var scrWidth = $( window ).width() - 30,
               scrHeight = $( window ).height() - 30,
               ifrPadding = 2 *padding,
               ifrBorder = 2* border,
               ifrWidth = width + ifrPadding + ifrBorder,
               ifrHeight = height + ifrPadding + ifrBorder,
               h, w;

               if ( ifrWidth < scrWidth && ifrHeight < scrHeight ) {
                  w = ifrWidth;
                  h = ifrHeight;
               } else if ( ( ifrWidth/scrWidth ) > ( ifrHeight/scrHeight ) ) {
                  w = scrWidth;
                  h = ( scrWidth/ifrWidth ) *ifrHeight;
               } else {
                  h = scrHeight;
                  w = ( scrHeight/ifrHeight )* ifrWidth;
               }
               return {
                  'width': w - ( ifrPadding + ifrBorder ),
                  'height': h - ( ifrPadding + ifrBorder )
               };
            };

            $( ".ui-popup iframe" )
            .attr( "width", 0 )
            .attr( "height", "auto" );
            $( "#popup_pap iframe" ).contents().find( "#map_popup" )
            .css( { "width" : 0, "height" : 0 } );

            $( "#popup_pap" ).on({
               popupbeforeposition: function() {
                  var size = scale( 480, 320, 0, 1 ),
                  w = size.width,
                  h = size.height;
                  $( "#popup_pap iframe" )
                  .attr( "width", w )
                  .attr( "height", h );
                  $( "#popup_pap iframe" ).contents().find( "#map_popup" )
                  .css( { "width": w, "height" : h } );
               },

               popupafterclose: function() {
                  $( "#popup_pap iframe" )
                  .attr( "width", 0 )
                  .attr( "height", 0 );
                  $( "#popup_pap iframe" ).contents().find( "#map_popup" )
                  .css( { "width": 0, "height" : 0 } );
               }
            });
         });
      </script>
   </head>

   <body>
      <div data-role = "page">
         <div data-role = "header">
            <h2>Header</h2>
         </div>

         <a href = "#popup_pap" data-rel = "popup" data-position-to = "window"
            class = "ui-btn ui-btn-inline">Open Map</a>
         <div data-role = "popup" id = "popup_pap" data-theme = "a">
            <a href = "#" data-rel = "back" class = "ui-btn ui-btn-b ui-btn-a
               ui-icon-delete ui-btn-icon-notext ui-btn-right">Close </a>
            <iframe src = "/jquery_mobile/src/mapl" width = "480"
               height = "320"></iframe>
         </div>

         <div data-role = "footer">
            <h2>Footer</h2>
         </div>

      </div>
   </body>
</html>

出力

上記のコードがどのように機能するかを確認するために、次の手順を実行してみましょう-

  • 上記のHTMLコードを jqm_map_popupl ファイルとしてサーバーのルートフォルダーに保存します。
  • このHTMLファイルをhttp://localhost/jqm_map_popuplとして開くと、次の出力が表示されます。