1 2 前へ 次へ 29 返信 最新の回答 日時: Jul 7, 2015 7:00 PM ユーザー:tmasa

    Google Map の地図部分のみの表示

    youkazu7777

      タイトル

      Google Map の地図部分のみの表示

      フォーラムに投稿

       http://forum-jp.filemaker.com/fmijp/board/message?board.id=jp-usfm&message.id=227&query.id=66503#M227

       

      こちらのHIRO様が書かれている内容を読みながら,とりあえずオブジェクト内に地図部分だけを表示するということは出来ました.

      しかしながら,こちらの方法だとレコードごとにGoogleMapsにアクセスして,埋め込み用のHTMLをコピーして来る必要があります.

       

      これを,

      住所を入力 → 埋め込み用のHTMLを自動的に取得(もしくは生成)→ ビューア内に地図部分のみを表示

       

      というようにしたいと思うのですが, Filemakerの機能だけで行うことはできるのかが分かりません.

      海外のサイトを見てみると,PHPでこのようなことを行っているサイトがありましたが,

      ( http://fmcollective.com/2007/05/23/google-mapping-in-filemaker/ )

      PHPについては全く知識がありませんし,どうも自前のWebサーバーがいる?ような感じでかなり難しそうです. 

       

      なにかうまい方法がないものでしょうか.

      ご教示いただけるとありがたいです.よろしくお願いします. 

       

      追記:FMPAdv11(Mac),MacOSX10.6.3,MacBook(Intel) 

      にyoukazu7777により編集されたメッセージ

        • 1. Re: Google Map の地図部分のみの表示
          Hiro
            

          WinXP+FMP9以降で動作検証しました。環境が違いますので、Macもいけたらいいのですが、....

           

          PHPなど外的要素を必要とせず、内的要素だけで実装してみました。

          Webビューアで利用可能な要素、JavaScript, GoogleMap API v3, DATAスキーム、

          などを活用して、住所情報だけからオリジナル地図描画までを全自動で行います。

           

          動作手順は、

          1.住所を引数に持つクエリパスをWebビューアに送り、その住所の標準グーグルマップを開きます。

          2.JavaScript&colonスキームのURIを上記ページへ直に送信して、googleMap APIの関数から上住所の「緯度経度」を取得、直ちにそれを引数に付けたリンクへページ移動させるJavaScriptを打ちます。

          3.ページ移動してくるのを待ち受けて、FMのGetLayoutObjectAttribute関数でそのURLを取り出し、それに付着した 「緯度経度」情報を切り出しFMフィールドへ格納します。

          4.「緯度経度」情報からカスタム地図を得るgoogleMap API向けJavaScriptを含むHTMLフォーマットをDATA:スキームで開き、カスタム地図を描画させて、完成です。

           

          【デモ/サンプル:gMap.fp7】
          http://briefcase.yahoo.co.jp/bc/brghspr/lst?&.dir=/352b/f512&.src=bc&.view=l

           


          【FM側設定】

          ●Webビューアは、2つ、

          ・「web」Webビューア、(中間作業用、描画時間を短縮するため、最小サイズ化して設置)

          ・「map」Webビューア、(目的地図表示用、600pxW600pxHで仮設定)

          ●フィールド設定は、3つ、

          ・「住所」テキストフィールド

          ・「緯度経度」テキストフィールド、(googleMap APIでカスタム地図を取得するのに必須、JSで取得しココへ格納)

          ・「コード表」3回繰り返しグローバルテキストフィールド、(各ステップで必要な汎用SCRIPTコードをグローバル格納)

           

          <コード表:グローバル繰り返し[3]フィールド>
          コード表[1]-----------------------------------
          http://local.google.co.jp/maps?q=<<住所>>
          コード表[2]-----------------------------------
          javascript:var pos=gApplication.getMap().getCenter();location.href=pos;

          (上の「:」はページに叱られたので半角→全角に代えてあります)
          コード表[3]-----------------------------------
          <script type=text/javascript src=http://maps.google.com/maps/api/js?sensor=false></script>
          <script type=text/javascript>
          google.maps.event.addDomListener(window,'load',function(){
          var mapdiv=document.getElementById('map');
          var myOptions={
          zoom:15,
          center:new google.maps.LatLng(<<緯度経度>>),
          scrollwheel:true,
          navigationControl:false,
          mapTypeControl:false,
          scaleControl:false,
          mapTypeId:google.maps.MapTypeId.ROADMAP
          };
          var map=new google.maps.Map(mapdiv,myOptions);
          var marker=new google.maps.Marker({
          map:map,
          position:new google.maps.LatLng(<<緯度経度>>)
          });
          });
          </script>
          <body style=margin:0px;padding:0px;border:0px;overflow:hidden>
          <div id=map style=width:600px;height:606px;></div>

          -----------------------------------------------------

           

          【地図表示:自動化スクリプト】(ファイル名、テーブル名は、gMap::として)

          ------------------------------------------------------
          ・Web ビューアの設定 [オブジェクト名: "map"; ""]
          ・Web ビューアの設定 [オブジェクト名: "web"; URL: Substitute(gMap::コード表[1];"<<住所>>";gMap::住所)]
          ・Loop
          ・ 変数を設定 [$ソース; 値:GetLayoutObjectAttribute ( "web" ; "content" )]
          ・  Exit Loop If [PatternCount($ソース;"<title>" & gMap::住所) and PatternCount($ソース;"</html>")]
          ・ スクリプト一時停止/続行 [間隔(秒): 0]
          ・End Loop
          ・フィールド設定 [gMap::緯度経度; ""]
          ・Web ビューアの設定 [オブジェクト名: "web"; URL: gMap::コード表[2]]
          ・Loop
          ・ 変数を設定 [$緯度経度; 値:GetLayoutObjectAttribute ( "web" ; "content" )]
          ・  Exit Loop If [PatternCount($緯度経度;"404 Not Found")]
          ・ スクリプト一時停止/続行 [間隔(秒): 0]
          ・End Loop
          ・フィールド設定 [gMap::緯度経度; Substitute(GetLayoutObjectAttribute ( "web" ; "source" );["http://local.google.co.jp/(";""];[")";""];["%20";""])]
          スクリプト一時停止/続行 [間隔(秒): 0]
          ・Web ビューアの設定 [オブジェクト名: "map"; URL: "data:text/html," & Substitute(gMap::コード表[3];["<<緯度経度>>";gMap::緯度経度];[¶;""])]

          ------------------------------------------------

           

          以上ですが、細かな点はサンプルをご覧下さい。

          にHiroにより編集されたメッセージ



















          • 2. Re: Google Map の地図部分のみの表示
            youkazu7777
              

            Hiro様

             

            ありがとうございます.(サンプルまで作っていただき恐縮です・・)

            いただいたサンプルを動作させてみたのですが,「地図表示」スクリプトの2つめのループのところから抜け出せない.

            やはりMacということで細かな挙動のちがいがあるのかもしれませんね・・・・

            私もいまひとつ動作原理がよく分からない状態で,どう修正したらいいのか分からないです.

            (にしてもスゴイ仕組みですね・・・・何が起こっているのかさっぱり分からない^^;)

             

            実は自分でもすこし調べてみて, PHP+GoogleMapAPIは結構いけるような気がしてきたので色々トライアンドエラーをしているところです.

            (複数の住所をひとつの地図上にマーカー表示できるのは非常に興味深いです.ぜひこれを実装できたらと思い・・・・)

             

            自分はWadaxのレンタルサーバを契約しているので,PHPを利用した表示も一応できなくはない.

            技術的な興味もあって分かる範囲で試してみました.

             

            http://fmcollective.com/2007/05/23/google-mapping-in-filemaker/ を参考にしながら行いました,

            GoogleMapApi.class.phpと,EasyGoogleMap.class.phpをサーバーにコピー

             

            <?php

            require 'EasyGoogleMap.class.php';
            # Google Maps API Key
            $googlemaps_api_key = " googlemap api 2なので,keyを取得します ";
            # Get the 'addr' parameter from the GET request
            $addr = $_GET['addr'];
            $gm = & new EasyGoogleMap($googlemaps_api_key);
            # Set address point(s)
            $gm->SetAddress($addr);
            $gm->SetInfoWindowText($addr);
            $gm->SetSideClick($addr);
            # To Enable/Disable Map Type (Map/Satellite/Hybrid)
            $gm->mMapType = TRUE;
            # Set map size
            $gm->SetMapWidth('700');
            $gm->SetMapHeight('600');
            ?>

             

            <html>
            <head>
            <title>EasyGoogleMap</title>
            <?php echo $gm->GmapsKey(); ?>
            </head>
            <body>
            <center>
            <?php
            echo $gm->GetSideClick();
            echo $gm->MapHolder();
            echo $gm->InitJs();
            echo $gm->UnloadMap();
            ?>
            </center>
            </body>

            </html> 

             

             

            とりあえず,地図を表示するところまでは行きましたが,参考しているページが英語のページなので,日本語の住所にどうやって対応させたらいいかがよく分からないところで,つまずいています.文字コードとかその辺の絡みもありそうで,少し知識が不足しています. 

            しかし,この方法ならかなりスマートに地図部分を切り出して表示することが可能だと思います.

            PHPをいじるのはなんせ初めてなので,少々敷居が高いことは承知の上ですが頑張ってみたいと思います.

             

             

            うまくいったらまたこちらに報告をさせていただければと思います. 














            • 3. Re: Google Map の地図部分のみの表示
              Hiro
                

              申し訳ありません。Macはやはりダメですか。

              こちらも古いMac+FM8.5で問題のJavaScriptスキムの送信テストしたらWebビューアは受けてくれなかったのですが、最新版は改善しているかもと期待していました。

              一般Macブラウザでは問題なくJavaScriptスキームを受信するので、FMがわざわざ制限しているのですネ。お節介な事をする!

               

              問題は、

              > コード表[2]-----------------------------------
              > javascript:var pos=gApplication.getMap().getCenter();location.href=pos;

              箇所のURI受信拒否なので、

              HTMLの中のIFRAMEなどに標準地図を表示させるようにして、そのHTML内のJSから上のスクリプトを実行させれば、いけそうに思います。

              あとで、試してみて上手くいったら、報告しますね、また、対策サンプルもアップします。

               

              • 4. Re: Google Map の地図部分のみの表示
                aqula
                   Hiroさんのアイデアを参考に作ってみました。Mac10.6.3 + FM8.5
                http://briefcase.yahoo.co.jp/bc/nyrky004/lst?&.dir=/88ed&.src=bc&.view=l

                Hiroさんとの違いは、テキスト関数で「緯度経度」を求めています。
                ※地図サイズ600×600、倍率 z=18

                ○フィールド定義
                ・「住所」テキスト
                ○Webビューア
                ・隠しWebビューア:オブジェクト名「web」
                "http://local.google.co.jp/maps?q=" & gMap2::住所
                ・地図表示Webビューア
                Case (
                 IsEmpty ( gMap2::住所 ) ;
                 "" ;
                 "DATA:text/html;charset=utf-8,<iframe width=600 height=600 frameborder=0 src=http://maps.google.co.jp/maps?f=q&amp;source=s_q&amp;hl=ja&amp;q="
                 &
                 GetAsURLEncoded ( gMap2::住所 )
                 &
                 "&amp;ll="
                 &
                Let ( [T=GetLayoutObjectAttribute ( "web" ; "content" );P=Position ( T ; "gForms,center" ; 1 ; 1 ) ];
                 Middle ( T ;
                  Position ( T ; "[" ; P ; 1 ) + 1 ;
                  Position ( T ; "]" ; P ; 1 ) - Position  ( T ; "[" ; P ; 1 ) - 1
                 )
                )
                 &
                "&amp;z=18&amp;output=embed>"
                 )














                • 5. Re: Google Map の地図部分のみの表示
                  youkazu7777
                    

                  aqula様

                   

                  ありがとうございます.すばらしいですね.

                  やりたかったことがほぼ出来てしまっている感じです.

                   

                  この例ではJavaScriptは使っていないのですよね?

                  もしかしたら,JavaScriptとGoogleMapApiを組み合わせれば,隠し表示用のフィールドを省略して(もちろん外部サーバーもなし)地図のみの切り出しができそうです.

                  のみならず,複数のマーカーを表示したり,果てはストリートビューを表示したりと,可能性はかなりありそうです.

                  どうもこのマップの表示の件,技術力はぜんぜん追いつかないのに,出来ることがたくさんあることだけが分かってしまって,どんどん深みにはまっていきそうですw

                   

                  いま,↓の記事を精読中です.(またもや英語で大変;^^・・・) 

                  http://www.proofgroup.com/blog/2008/dec/google_mapping_single_address

                   

                  ゼロポストでのせた,http://fmcollective.com/2007/09/05/google-mapping-part-deux-multiple-addresses/

                  の記事からのリンクです.

                  fmcollectiveのほうは2007年のもので,その後2008年に筆者はもっとスマートに解決する方法があった.ということで紹介してくれています.

                  ここではシングルマーカーの表示にとどまっていますが,応用すれば複数マーカーを表示して,別フレームにリンクのリストを表示するというようなこともできるようです.

                  http://code.google.com/intl/ja/apis/maps/documentation/examples/index.html

                   

                  もう少し頑張ってみます.

                  でもキリがなさそうなのでゴールを決めたいと思います.

                   

                  1.単一レコードの場合の表示はHiro様,aqula様が提示していただいたスクリプトを少し改良し,GoogleApiを利用して表示します.

                  2.複数レコードのマーカーの表示.マップ上にIndexつきのマーカーを表示し,そのIndexに対応したリストをマップ外のフレームにリンクで表示.

                  (レコードが大量になった場合の処理が難しそう.上限を決める必要があるか?)

                   

                  これで顧客の住所の分布などが視覚的に分かるようになって,マップの有用度がぐんと上がります.

                  大型連休のヒマに任せてなんとか出来るところまでやりたいと思います.

                  Hiro様,aqula様,もう少しだけ貸していただけるお知恵がありましたらおつきあいよろしくお願いします. 

                  • 6. Re: Google Map の地図部分のみの表示
                    Hiro
                      

                    ifameでjsを送信するのはセキュリティがきつく結構面倒なので、aqulaさんの緯度経度の取得法(元々これがソース内で見つけられなかったので、jsで得る方法を取ってました)を利用させていただいて、改サンプル「gMap_v2.fp7」を作り追加アップしておきました。宜しければご参考ください。

                    http://briefcase.yahoo.co.jp/bc/brghspr/lst?&.dir=/352b/f512&.src=bc&.view=l

                     

                    なお、GoogleMap API3を使ってますので、お望みのカスタム化が可能と思います。また、v3はライセンスキーを取得する必要がなく簡便です。

                    • 7. Re: Google Map の地図部分のみの表示
                      youkazu7777
                        

                      Hiro様

                       

                      ありがとうございます. 

                      いただいたv2ファイルを試してみましたが,やはりうまく動いてくれませんでした.

                       

                      もしかしたら,dataスキームとJavaScriptの組み合わせが,Mac版では動作しないということなのでしょうか.

                      http://www.proofgroup.com/blog/2008/dec/google_mapping_single_address

                      こちらのページでも,PC版はできたのに,Mac版では動作しないとなっていましたね・・・・(今頃気づくなという話なんですが)

                      筆者はMac版での動作はあきらめてしまったようです^^;

                       

                      やはりPHP経由でやるしかなさそうです.

                       

                      • 8. Re: Google Map の地図部分のみの表示
                        Hiro
                          

                        > いただいたv2ファイルを試してみましたが,やはりうまく動いてくれませんでした.

                        あら、残念これもMacはダメですか?

                        なら、GoogleMapsAPIを必要としない、aqulaさんの方法でURL直打ちしかないかな?

                        ちょっと調べたらURL直打ちでも各種パラメータが用意されていてかなりなカスタムもできるみたいです。

                           Google Map Parameters

                        • 9. Re: Google Map の地図部分のみの表示
                          aqula
                            

                          >> いただいたv2ファイルを試してみましたが,やはりうまく動いてくれませんでした.

                          > あら、残念これもMacはダメですか?

                           

                          FM8.5ではサクサク表示していて、Hiroさんスゴイと感激していたんですが、

                          10と11では表示しませんでした。(9は未検証)

                          なにか仕様変更があったんでしょうか?

                          • 10. Re: Google Map の地図部分のみの表示
                            youkazu7777
                              

                            Hiro様,aqula様

                             

                            なかなかPHPで行うのは難しいですね・・・

                            一つ質問をさせてください.(一番したのほうに書いております)

                             

                            とりあえず,1件表示は日本語での表示は問題なく出来るようになりました.

                             

                            複数表示については結構ハードルが高いです.

                            問題は現在のところ大きく二つ.

                             

                            1.

                            マップに表示したいアドレスを URLの「.php?」以下にのせてサーバーに送信するわけですが, 

                            複数アドレスになると,シリアルな文字列を,配列に分解しないといけないわけですが,この文字列処理がうまくいきません.

                            ファイルメーカーで下記のような住所のフィールドを,

                            --------------------------------------------------------- 

                            1 Any Street, Anytown, Anystate, 12345

                            2 Any Street, Anytown, Anystate, 12345
                            3 Any Street, Anytown, Anystate, 12345

                            4 Any Street, Anytown, Anystate, 12345 

                            ---------------------------------------------------------

                             

                            こんな感じのシリアルな文字列に変換して・・・・ 

                            ---------------------------------------------------------

                            a:4:{i:0;s:38:"1 Any Street, Anytown, Anystate, 12345";i:1;s:38:"2 Any Street, Anytown, Anystate, 12345";i:2;s:38:"3 Any Street, Anytown, Anystate, 12345";i:3;s:38:"4 Any Street, Anytown, Anystate, 12345";} 

                            ---------------------------------------------------------

                             

                            これをさらに,サーバー側で配列に変換し直す.

                            $addrarray = $_GET[’addr’];      //URLアドレスからaddr以下を抽出

                            $addrarray = stripslashes($addrarray); //バックスラッシュ文字を削除?

                            $addrarray = unserialize($addrarray);   //ここで配列にもどしてる??

                             

                            この部分を日本語に対応させないといけないわけですが,まだよく分かっておりません.

                            var_dumpで変換の様子を見ているととりあえず英語はちゃんと配列になるみたいですね.

                            日本語の件に関してはもう少しトライしてみます.(なにかいい方法があればお願いします)

                             

                            2.

                            URLにのせられる文字数は2000バイトぐらいまで?なので,日本語の住所を載せると 十数件で限界に達してしまうと思われる.

                            したがって,このような住所をずらずらとならべる方法だと20件を越えてくるとかなり怪しくなってしまいます.

                            そこで,質問なのですが,URLの代わりに,DataスキームによってPHPに住所データを渡すようなことは出来ないのかということです.

                            Dataスキームに関するwebの情報は自分でググった感じだとPHPとの連携に関してはほとんどない感じでした.

                             

                            まぁ,そもそもDataスキームってなに?ってところから実はよく分かりません・・・^^; 

                            URLに画像のデータを載せられるってことはものすごく大きな情報もやりとりできるってこと?って勝手に想像してふと思いついただけですので,

                            ぜんぜんおかしなことを言っていたらごめんなさい.

                             

                            よろしくお願いします. 

                            • 11. Re: Google Map の地図部分のみの表示
                              Hiro
                                

                              その後、色々やってたら、WinでもGoogleMapsAPIがWebビューアに拒否されるものがあるのが分かりました。
                              住所から直引き一発で地図表示する下記コードを作り試したところ、普通のブラウザでは問題ないのにWebビューアだとどうしても拒否され動作しません。やむなく、一度外部出力して直ちにこのファイルをWebビューアに表示させると問題なく表示できます。
                              何か腑に落ちませんが、Macだとどうでしょうか?(GoogleMapsAPIがもしや使えたらラッキーなのですが?)

                               

                              【住所から直引き一発で地図表示】デモ・サンプル gMap_v3.fp7
                              ----------------------------------------------------------------
                              <script type=text/javascript src=http://maps.google.com/maps/api/js?sensor=false></script>
                              <script type=text/javascript>
                              window.onload=function(){
                              var address='<<住所>>';
                              var geocoder;
                              var map;
                              geocoder=new google.maps.Geocoder();
                              if(geocoder){
                              geocoder.geocode({'address':address},function(results,status){
                              if(status==google.maps.GeocoderStatus.OK){
                              var LL=results[0].geometry.location;
                              var LLStr=new String(LL);
                              LLStr=LLStr.replace(/[\( \)]/,'');
                              var latlngStr=LLStr.split(',',2);
                              var lat=latlngStr[0];
                              var lng=latlngStr[1];
                              var latlng=new google.maps.LatLng(lat,lng);
                              var myOptions={
                              center:latlng,
                              zoom:15,
                              disableDefaultUI:true,
                              mapTypeId:google.maps.MapTypeId.ROADMAP
                              };
                              map=new google.maps.Map(document.getElementById('map_canvas'),myOptions);
                              map.setCenter(LL);
                              var marker=new google.maps.Marker({map:map,position:LL});
                              }else{
                              alert('Geocode was not successful for the following reason: '+status);
                              }
                              })
                              }
                              }
                              </script>
                              <body style=margin:0px;padding:0px;border:0px;overflow:hidden;>
                              <div id=map_canvas style=width:100%;height:100%;></div>
                              </body>
                              ----------------------------------------------------------------

                               

                               

                               

                              もし、MacのWebビューアがGoogleMapsAPIを通さないなら、

                               

                              > とりあえず,1件表示は日本語での表示は問題なく出来るようになりました.
                              これは、PHPを介して、と言う意味ですか?つまり、PHPが生成したAPIコードはMacのWebビューアで表示できた?
                              この表示できたときのHTMLソースはどうなっていますか?単にEmbed埋め込みリンクURLではないですよね?

                               

                              > 1.マップに表示したいアドレスを URLの「.php?」以下にのせてサーバーに送信するわけですが,
                              地図のカスタム化にgMapsAPIの利用は必須で、GoogleMapsAPIラッパー.phpでもAPIコード(JavaScript)を結果として返してるようなので、幾らご苦労されても結局のところ最終的にMacのWebビューアが受けるのか疑問です。

                               

                              > 2.URLにのせられる文字数は2000バイトぐらいまで?なので,日本語の住所を載せると 十数件で限界に達してしまうと思われる.そこで,質問なのですが,URLの代わりに,DataスキームによってPHPに住所データを渡すようなことは出来ないのかということです.
                              DATAスキームもHTTPと同じURIの中に含まれ、送信許容バイト数は同じです。クエリHTTPパスをDATAに代えてもむしろ文字数が増えることはあっても減ることはありません。
                              DATAスキームを利用する利点は、ブラウザ表示する内容を外部ファイルとして用意しなければならないところを、簡易的に直接HTMLフォーマットやバイナリーデータをURI直送してダイレクトにブラウザ表示できるところです。

                               

                              もしも、多量なデータを送信するなら、フォームHTMLをフィールド生成して、それを仮外部出力して直ちにWebビューアに表示、リダイレクトにPOST送信してPHPサーバへデータ送信するようにします。



















                              • 12. Re: Google Map の地図部分のみの表示
                                youkazu7777
                                  

                                 

                                Hiro様

                                 

                                たびたび恐れ入ります.

                                 

                                v3,動作しました!^^;

                                いろいろな方法があるのですね.

                                まだコードをじっくり読めていないのですが,時間をかけて勉強させていただきます.

                                 

                                質問へのご回答もありがとうございます.

                                なるほど,Dataスキームのことよく分かりました.

                                やはり大きなデータの送信は難しいのですね.

                                v3ファイルでも使われているテクニックのようですが,仮外部出力というのは,どういう動作のことを指すのでしょうか.

                                具体的な動作のイメージが分かりません. 

                                 

                                しかし・・・この件は,私には少々ハードルが高すぎる感がしてきました・・・

                                めげそうです・・・^^;

                                 

                                 

                                ところで,一件表示についてですが, 

                                 

                                これは、PHPを介して、と言う意味ですか?つまり、PHPが生成したAPIコードはMacのWebビューアで表示できた?

                                この表示できたときのHTMLソースはどうなっていますか?単にEmbed埋め込みリンクURLではないですよね?

                                 

                                 

                                 

                                そうです.こちらがそのコードです.

                                GoogleApiを使うのはサーバー側のPHPプログラムの方なので,Webビューアはあくまでもできあがったページを読み込んでいるだけになります.

                                ですので,PHPサーバーに対してマップを描画する命令さえちゃんと送ることが出来れば,何件になっても原理的には表示が可能なのです. 

                                 =============================

                                <?php

                                header("Content-Type: text/html;charset=utf-8");

                                require 'EasyGoogleMap.class.php';

                                # Google Maps API Key

                                $googlemaps_api_key = "*********************************";

                                # Get the 'addr' parameter from the GET request

                                $addr = $_GET['addr']; //mb_convert_encoding($_GET['addr'] , "UTF-8");

                                var_dump($addr);

                                $gm = & new EasyGoogleMap($googlemaps_api_key);

                                # Set address point(s)

                                $gm->SetAddress($addr);

                                $gm->SetInfoWindowText($addr);

                                $gm->SetSideClick($addr);

                                # To Enable/Disable Map Type (Map/Satellite/Hybrid)

                                $gm->mMapType = TRUE;

                                # Set map size

                                $gm->SetMapWidth('700');

                                $gm->SetMapHeight('600');

                                ?>

                                <html>

                                <head>

                                <title>EasyGoogleMap</title>

                                <?php echo $gm->GmapsKey(); ?>

                                </head>

                                <body>

                                <center>

                                <?php

                                echo $gm->GetSideClick();

                                echo $gm->MapHolder();

                                echo $gm->InitJs();

                                echo $gm->UnloadMap();

                                ?>

                                </center>

                                </body>

                                </html> 

                                 ===========================

                                外部サーバーに頼る方法ですが,ファイルメーカー側のフィールドは結構すっきりしています.

                                このPHPサーバーに対して,"http://xxx.co.jp/GoogleMapApi/googlemap.php?addr=<<住所フィールド>>

                                という感じでアドレスを送ると,サーバー側でHTML+地図のみ埋め込みのページを作って返してくれます. 

                                 

                                このプログラムを複数表示に対応させ,なおかつ送信する住所のデータが大きくなっても対応できるような仕組みが必要ということになりますね・・・ 

                                • 13. Re: Google Map の地図部分のみの表示
                                  Hiro
                                    

                                  > v3,動作しました!^^;

                                  おぉ、動きましたか!

                                  同じくGoogleMapsAPIを使った外部PHPも動作していることから、問題なのはどうやらWebビューアではなくDATAスキームの方に相性問題があったようです。

                                   

                                  ならば、つまり、

                                  外部ファイルの利用が必要なら、同じv3の方法では書き出しデータ量の制限はありませんから、マルチマーカー処理に有利ではないでしょうか?

                                  また、自己PC内で自己完結できますし、スピードの点でも有利かと思います。

                                  問題はJavaScriptですが、苦手ならPHPと同じように、例えばJQueryのプラグインを利用すると言う手もあると思います。

                                   

                                  • 14. Re: Google Map の地図部分のみの表示
                                    Hiro
                                      

                                    その後、マルチマーカーの一発表示も一応できました。

                                    が、マルチマーカーの場合、基本的な部分で疑問が.....、

                                     

                                    住所から緯度経度を取得するのは、別にAjax処理で取得しますが、

                                    Ajaxは必然的に別スレットとなり、その利用はこの別スレット内で

                                    のみに限られてしまいます。

                                    元スレットとの引数や取得結果(緯度経度)の受け渡しができないため、

                                    その後の本スレット展開ができません。

                                    GoogleMapsAPIは緯度経度を基に展開しているだけに、住所データだけ

                                    から高度なカスタム化を展開するのは、困難な構造に思えます。

                                    ここは、事前に、 住所から緯度経度をFMに取得しておき、2段構えで、

                                    緯度経度から普通にGoogleMapsAPIでカスタム表示させるのが、

                                    推奨でもあり正しいアプローチのような気がしてます。

                                     

                                    もう少し挑戦はしてみますが、....^^;。youkazu7777さんの方は如何ですか?

                                    1 2 前へ 次へ