Google Maps API 質問箱at PHP
Google Maps API 質問箱 - 暇つぶし2ch829:nobodyさん
08/03/25 19:55:29 ePll5l2q
教えてください。
参考書を買って勉強中なのですが、
↓のソースに情報ウィンドウを追加させるにはどのようにしたらいいでしょうか?

URLリンク(www.openspc2.org)

830:829
08/03/25 19:57:10 ePll5l2q
URL間違えました。すみません・・・

URLリンク(www.openspc2.org)

831:nobodyさん
08/03/25 22:26:59
>>829
何がわからないかはっきり書けって。
丸投げか?

832:829
08/03/26 00:14:42 fPFMy6eV
>>831
言葉足らずで申し訳ありません。

やりたいこと:
>>830のソースを元とし、マーカーがクリックされたらcsvから読込まれた情報ウィンドウを表示したい

わからないこと:
GEvent.addListenerをどこに追加し、
csvのデータをmarker.openInfoWindowHtmlに渡す?その追加方法がわかりません.


833:829
08/03/26 00:17:10 fPFMy6eV
こんな感じだと思っているのですが、そこからがつまずいています。

function addMarker() {
map.clearOverlays(); // 全てのマーカーを消去(線も消えるので注意)
var count = 0; // 表示するマーカーの数をカウントする変数
var CR = String.fromCharCode(13);
var txt = httpObj.responseText;
var pointData = txt.split(CR);
var area = map.getBounds();
for (var i=0; i<pointData.length; i++) {
var pnt = pointData[i].split(",");
var mx = pnt[0];
var my = pnt[1];
var gpObj = new GLatLng(my, mx);
if (area.contains(gpObj)) {
map.addOverlay(new GMarker(gpObj));
count++;
}
GEvent.addListener(gmap, "click", function(marker){
marker.openInfoWindowHtml(csvのデータ指定);
} );
}

834:nobodyさん
08/03/26 01:03:55
>>833
変数がいきなり変わってたりして意味不明やけど、

map.addOverlay(new GMarker(gpObj));
こうすると追加したマーカーに対してイベントを設定できない。

marker = new GMarker(gpObj));
中略
GEvent.addListener(marker, "click"~

合ってるかどうかは知らんけど、たぶんいける



835:829
08/03/26 19:03:16 +Zi/Ns8O
>>834
レスありがとうございます。

ご指摘いただいた箇所を修正しましたが、エラー表示が出てしまいました。
変更箇所が悪かったのでしょうか?

if (area.contains(gpObj)) {
marker = new GMarker(gpObj));
count++;
}
GEvent.addListener(marker, "click", function(marker){
marker.openInfoWindowHtml(csvのデータ指定);
} );
}

---------------------------------------
marker = new GMarker(gpObj));
↑の行数でエラーが出てるようです

ライン:37
文字:32
エラー:';'がありません。
コード:0
---------------------------------------

836:nobodyさん
08/03/26 20:34:17
素人が見てもカッコが1個多そうだけど

837:nobodyさん
08/03/27 12:23:57 x8Bfv0lr
Map上のコンビニとかファミレス情報は消せないのでしょうか?

838:nobodyさん
08/03/27 16:27:29
>>836
これが本当の「かっこつけすぎ」。

839:829
08/03/27 23:43:16 MqTPnQ18
報告
>>650の方が同じようなことをやっていましたので参考にしました。

現在は情報ウィンドウが表示されるようになりました。
ありがとうございます。

次なのですが、情報ウィンドウが表示できたのですがCSVから読込みさせる方法でつまづいています。
どのように指定すればいいのでしょうか?

840:829
08/03/27 23:45:01 MqTPnQ18
現在のソース

var CR = String.fromCharCode(13);
var txt = httpObj.responseText;
var pointData = txt.split(CR);
var area = map.getBounds();
for (var i=0; i<pointData.length; i++) {
var pnt = pointData[i].split(",");
var mx = pnt[0];
var my = pnt[1];
var gpObj = new GLatLng(mx, my);
if (area.contains(gpObj)) {
marker = new GMarker(gpObj);
count++;
map.addOverlay(marker);
GEvent.addListener(map,"click",function(marker){
if(marker){
marker.openInfoWindowHtml(CSVの列番号を指定);
}});}}

841:829
08/03/27 23:47:05 MqTPnQ18
var gpObj = new GLatLng(mx, my);

var mz = pnt[3];
var gpOiw = new htmlElem(mz);

if (area.contains(gpObj)) {

↑こんな感じで足せばいいと思ったのですが考えが甘かったです・・・

842:nobodyさん
08/03/28 01:45:51
さすがにもうちょっと勉強しないと
教えるじゃなく、ソース全部書いてあげることになりそう

843:nobodyさん
08/03/29 12:10:58
もちろん書いてもらうつもりなんですが

844:nobodyさん
08/04/09 17:34:20
URLリンク(xoops.iko-ze.net)

このサイトを携帯から見た場合、地図の表示範囲内にあるマーカーの一覧が下に表示されます。
携帯向けなのでJAVAスクリプト未使用のはず。

JAVAスクリプトを使わずにこのような表示をするにはどうしたら良いのでしょうか。

845:nobodyさん
08/04/09 17:43:54
>>844
マーカーの場所はデータとして持っていて、
どの場所を地図上にマーキングするかをコントロールしているんだから
そのマーキングの名称やらをページ内に表示できることに何の不思議もないですよ。

846:nobodyさん
08/04/09 19:00:22
>>845
なるほど。

地図の範囲内にマーカー座標が含まれている

マーカー表示、およびマーカー情報を表示ということですよね。

その判別(絞込み)方法が知りたいのですが・・・

847:nobodyさん
08/04/09 21:05:39
>>846
いや、そもそも>>844の地図とか、何やっても一緒じゃない?
全然動的じゃないような…

848:nobodyさん
08/04/09 21:09:39
>>846
> 地図の範囲内にマーカー座標が含まれている
いや考え方が逆
地図の範囲内に含まれるポイントをマークする。
この違いは判りますよね?

849:nobodyさん
08/04/09 21:36:21
>>848
はい、それについては判ってます。


>地図の範囲内に含まれるポイントをマークする

この場合PHPで処理するなら次のような感じですよね。

if(地図の範囲内にポイントが存在) {
マーカーの情報をデータベースから取り出して表示
}

どうやって地図の範囲を調べてるのか、そのロジックがわからないんです。

850:nobodyさん
08/04/10 00:39:22
携帯で見れなかったから予想だけど、中心点の座標と縮尺さえわかれば、4辺の座標がわかるから、その範囲内の物をDBから引っ張るってことじゃなくて?

851:nobodyさん
08/04/10 02:43:56
>>849
> どうやって地図の範囲を調べてるのか、そのロジックがわからないんです。
API見てこいボケ!そのまんまあるわ

852:nobodyさん
08/04/10 04:41:32
>>851
探してみましたが見つかりませんでした。

Google Static Maps APIに関しては情報が少ないんで良く分からないんですよね。
とりあえずもうちょっと探してみます。

853:nobodyさん
08/04/10 12:14:03
GMarker をクリックしたときに任意のコードを実行させるにはどうしたらいいですか。
var gmarker = new GMarker(new GLatLng(37.4419, -122.1419));
gmarker.onclick = function() { alert('clicked.'); }
としたけどだめでした。
こんな簡単な質問でごめんなさい。

854:nobodyさん
08/04/10 22:47:34
>>844

そもそも gnaviはXOOPSのモジュールでおーぷんそーすだろ?。

ごたごたいうまえにソースDLしてみてみろよ

ソースDLできるじゃねぇか

855:nobodyさん
08/04/10 23:09:55

>>853

var gmarker = new GMarker(new GLatLng(37.4419, -122.1419));
GEvent.addListener(gmarker, "click", function() {
alert('clicked.');
});

でいけねーかな。
googlemapのイベントはリスナーでとるのよ

856:nobodyさん
08/04/11 05:18:50
>>854
まだ携帯版は公開されてないんです。

とりあえず>>850さんの案で、自力計算から求めてみることにしました。
色々とコメントありがとうございました。

857:nobodyさん
08/04/11 09:55:14
>>856
URLリンク(xoops.iko-ze.net)
これね

858:nobodyさん
08/04/11 12:06:33
自家実装だったとしても座標の計算でいける。
ぽすぐれなんかだと、2点の距離計算が組み込み関数として用意されてるしね。

859:nobodyさん
08/04/11 13:13:16
ぽすぐれてw
2点間の距離なんて関数なくても馬鹿でもわかるだろw

860:nobodyさん
08/04/11 19:50:30
半径〇○内の、という話じゃない?ポスグレ。

861:nobodyさん
08/04/17 02:31:01
しかし、いつになったら新名神高速道路表示されるんだろ。

862:nobodyさん
08/04/18 10:45:06

取得済みの「マップAPIキー」を無効にする方法はありますか?


863:nobodyさん
08/04/18 22:27:03
あります

864:nobodyさん
08/04/25 15:45:08 VjGTXO6P
APIキーが無くても表示出来るんでしょうか?

865:nobodyさん
08/04/25 20:40:24
NAVITIMEがSB端末への進出に積極的ですね。

ナビタイム、X02NK/X03HT向けの地図アプリ
URLリンク(k-tai.impress.co.jp)

ナビタイム、「920P」向けの助手席カーナビサービス
URLリンク(k-tai.impress.co.jp)

866:nobodyさん
08/04/25 20:41:44
>>865
スマソ GPS関連スレへのカキコと間違えた。

867:nobodyさん
08/05/03 13:37:27 VSvM8iEp
地図の右側にHTMLのエリアを被せて表示させているのですが、
アイコンをクリックするとふきだしがエリアの下に入ってしまいます。

URLリンク(www.uniqlo.com)

↑のサイトのようにマーカーをクリックしたときにふきだしを
特定の位置にずらしたいのですが、
どのようにしたらよいでしょうか。。

868:nobodyさん
08/05/04 12:11:01
このサイトのようにって…

やってるサイトがあるんならソース見ろよ

869:nobodyさん
08/05/04 12:25:28
>>867
ふきだしをずらす処理なんてしてるか?
吹き出しが画面に収まるように勝手に移動してるだけじゃないの?

870:nobodyさん
08/05/04 13:27:30
>>867
しかもふきだししたにはいってるんだが・・・

871:nobodyさん
08/05/04 15:45:50
PHP化まだ~~?
JavaScriptをPHPで出力すのは無しね

872:nobodyさん
08/05/04 19:02:42
>>871
なにをPHP化するのまってるんだっけ?

873:nobodyさん
08/05/06 22:37:57
PHP化???

874:nobodyさん
08/05/08 09:27:55
ここのことだろw
URLリンク(www.php.co.jp)


875:nobodyさん
08/05/08 10:53:02
クライアント側でPHPを実行するの?
phpscriptかw

876:nobodyさん
08/05/08 11:30:01
>>874
宣伝か?ハゲ

googlemapページを出力するPHPスクリプトなんてゴロゴロあるだろうが



877:nobodyさん
08/05/08 11:59:02
>>876
ボケに向かってハゲとは何だ!

878:nobodyさん
08/05/09 18:40:39
PHP環境ででgoogleMapを管理するCMSとか?

879:nobodyさん
08/05/09 22:23:31
クライアント実行のJavaスクリプトじゃ住所から緯度経度は取れても
そのMap表示は、再表示が必要なとこあたりか?


880:nobodyさん
08/05/09 22:37:00
>>879
それは再表示必要ないな
似たようなことで悩んだことあったが忘れた


881:nobodyさん
08/05/11 01:40:29 s1zwpcjq
Google Mapsのサーチボックスを自サイトに埋め込むことって出来ないよねェ?

882:nobodyさん
08/05/11 07:52:48
>>881
同じようなものなら可能

883:nobodyさん
08/05/11 11:37:06
>>882
えっ!何それェ?おしえてくだされ。

884:nobodyさん
08/05/11 16:29:20
最初からこういうものが作りたいんだけどって相談すればいいのに
なんでそんな気持ち悪い聞き方すんの?


885:nobodyさん
08/05/11 17:08:53
できないと思ってて、Googleの規約みたいのに反しちゃうんじゃないかって考えてたからだよ。
出来るワケねーだろ!って言われて終りかと思ってた。

886:nobodyさん
08/05/11 18:06:07
>>882
日本語でおk

887:nobodyさん
08/05/15 15:36:36
php化はともかくw、flash化はしてほしいよな

888:nobodyさん
08/05/15 20:37:19
って言ってるそばから対応キテタw

Google MapsをFlashから利用できる「Google Maps API for Flash」公開
URLリンク(internet.watch.impress.co.jp)


889:nobodyさん
08/05/20 09:50:40
Flash版よさげだな
URLリンク(geoquake.jp)

890:nobodyさん
08/05/21 13:40:16
マルチですまんが ここで聞いていいのかあれなのだが、
グーグルアースのプライマリデータってエクスポートできる方法ありますか?

891:nobodyさん
08/05/22 03:42:09
マルチはよくないです

892:nobodyさん
08/05/22 10:23:40
けっきょくどこでも答えられないからいいんじゃね?

893:nobodyさん
08/05/22 10:41:48
ありますん

894:nobodyさん
08/05/22 11:43:05
>>893
漏れも知りたい

895:nobodyさん
08/05/23 00:17:05 jcOM65/Q
ここ最近、GoogleMaps重くね?

896:nobodyさん
08/06/14 01:27:52
APIドキュメントの日本語版でたね

897:nobodyさん
08/06/14 18:24:00
>>146でもありますが、
ある一定以上の倍率にしたくない場合はどのような方法がありますでしょうか?

GEvent.addListener(map, 'zoomend', function(oldZoomLevel,newZoomLevel ){ });
を使えば、「一度倍率が変更された」後に強制的に倍率変更は出来そうですが、
そもそも変更させないことは可能でしょうか?

お知恵をお貸し下さいm(_ _)m

898:nobodyさん
08/06/18 19:59:25
php+mysqlでマーカー配置しようとしたら、xml吐かせた時にFFやSafariではうまくいったのに、
IEだと
XML ページを表示できません
スタイル シートを使用した XML 入力は表示できません。エラーを訂正してください。 [更新] ボタンをクリックするか、または後でやり直してください。
とエラーを吐かれてしまいます。

テストはいずれもWindowsXP内から、鯖は自鯖でMySQL 5.0.45+PHP 5.2.4です。
片一方ではうまくいってるのでなんともし難く、手前の腕では手詰まってしまいました。
何卒お力添えを。

899:nobodyさん
08/06/19 00:43:53 tlswNeC+
こんばんは。

マーカーをクリックするとふきだしが出るようにしています。
その際に、端っこのマーカーだと地図が少しずれて、
GEvent.addListener(map, 'moveend',~ が呼び出されてしまいます。
これを呼び出されないようにする方法もしくは、呼び出された後にふきだしが表示されていれば
何も処理しないということは出来ないでしょうか?


900:898
08/06/19 02:44:22
すんません、自己解決しました。
すんごい初歩ミス…orz

901:nobodyさん
08/06/19 10:11:02
>>899
ムリポ

結局は噴出しでムーブするのは事実だからね
呼び出されなくする方法はないので

フラグでもつけたらいいんじゃない?

902:nobodyさん
08/06/21 01:15:46
マーカークリックしてバルーン内にhtmlを表示させた時に表示が崩れる時があるのは仕様?
バルーン閉じてもう一回同じマーカークリックするとちゃんと表示されるんだけども。

903:nobodyさん
08/06/21 12:05:15
>>902

当て推量だけどimgタグを使っていてwidthとheightを指定していないってオチじゃないか?
画像を読み込む前はイメージのサイズがわからないのでレイアウトが崩れる。
一度読み込むとキャッシュに残っているのでサイズは既知。

仕様と言えば仕様だが。

904:nobodyさん
08/06/22 02:10:21
>>902
<IMG>タグを使って height 指定をしていない場合で画像の高さによってレイアウトが

905:nobodyさん
08/06/22 02:23:04
ミスった904の続き

<IMG>タグを使って height 指定をしていない場合で画像の高さによって
全体の高さが変わる場合は崩れる仕様。
これはバルーン内のHTMLが形成された後に画像がロードされるから。

903が言うようにheightを指定するのが一番いいが結構面倒。

javascriptの仕様では直前にheightをとろうとしても失敗することがおおいので以下のようにすればヨロシ

GEvent.addListener( m , "click", function(){
var i =new Image();
i.onload=function(){this.openInfoWindowHtml("<img src='画像のURL'>");};
i.src="画像のURL";
})

配列でマーカー管理してるのならもうちょっと複雑になるが、
この方法では画像をロードしてからバルーンが出るのでレイアウトは崩れない。

画像が重いと開くまで一瞬時間がかかるけど。

マーカーが少ないなら全部プリロードしてしまうのも良いかもね

906:nobodyさん
08/06/22 02:24:24
あ、thisじゃとれんね。

GEvent.addListener( m , "click", function(){
var i =new Image();
i.onload=function(){m.openInfoWindowHtml("<img src='画像のURL'>");};
i.src="画像のURL";
})

907:902
08/06/22 11:24:36
>>903-906
丁寧にどうもです。
マーカーは20個以上あるので配列使って配置する中で単純に<IMG>タグのみで
作ってました。
HTML生成が先ということは、最悪<TABLE>タグを使ってheight指定してあげればレイアウトは保持されるということで合ってますかね?
画像は240*180でほぼ固定なのでこっちのほうが面倒は無いかなと思ったのですが。

プリロードの件、参考になりました。
今回は急を要した話だったので、今後もう少し知識付けてから参考にさせていただきます。
ありがとうございました。

908:nobodyさん
08/06/22 17:36:28
単純に image タグでいいんだが、何でtableタグを使おうとしているんでしょうか?
<img src="image01.jpg" width="240" height="180" alt="image01">

「保持されるという事で合ってますか」とか聞く前に試してみればいいと思うんだが?
レス書いた文字数より遥かに少ないキータッチで確認できるのに(w

あと、width属性が原因かどうかは誰にも分からんよ。元の質問が「崩れる時がある」なんて情報不足も甚だしい。
真面目なレスが来ただけで奇蹟と思わないと。
HTMLの知識より先に身につける事があるんじゃね?

909:nobodyさん
08/06/22 18:17:49
>>907
わざわざtableタグ使わなくても>>908のようにimgタグで十分だと思う
imgもheightやwidth指定できるし。
web上でタグとか独習してるのなら、すぐ手元で引けるHTML辞典とか買っておいた方がいいよ。
サンプルも掲載されてるからイメージ掴みやすいだろうし。

情報不足ってか、再現性が無いから崩れるときがあるって書き方したんじゃね?
そんな喧々しなくていいと思うけど。
…ただ複数のブラウザで試すとか、不具合でたブラウザくらいは書いてもいいと思ったけどな。


910:nobodyさん
08/06/23 10:04:53
srcがDBかなんかから引っ張るからwidth heightがとれないってことじゃないの?
大枠でブロックでスペース切っとくのもいいと思うけどな
ただ、tableだとブラウザによってはheight解釈しないからdivのほうがいいぞ

ちなみに908が馬鹿なこと言ってるけど
この現象はすでに報告されている


911:nobodyさん
08/06/24 00:18:26
>>910
バルーン表示時にwidth を指定していないとレイアウトが崩れるのは既知のトラブルですが、
「レイアウトが崩れた」原因が全て width, height 属性とは限らないのでは?

902 の質問は「表示が崩れる事がある」「リロードすると治る」としか書いてないので、width 属性以外の原因も想定するのは当たり前だと思うんだが。
「トラブルの原因は既知である」と信じ込むのは個人の自由だけどね。


912:nobodyさん
08/06/24 00:43:05
>>911
なんでそんなに必死なのかは知らないけど、
今回の内容については明らかだろw

913:nobodyさん
08/06/24 01:46:54
独り言だが、
Google Maps API は日夜バージョンアップされるので、最新バージョンで一時的に不具合が出るのはよくある。
古いバージョンのバルーンだと外側の角丸部とコンテンツの四角部に 1px の隙間が空いて表示される時期があった。
バルーン内の長文テキストに nowrap 属性を付けないとレイアウトが乱れるブラウザもあったと聞く。
「そのトラブル、俺知ってるぜ」と断定するより、色んな可能性を考えた方が楽しいよな。

914:nobodyさん
08/06/24 11:57:25
>>913
なんでそんなに必死なのかは知らないけど、
今回の内容については明らかだろww

915:nobodyさん
08/07/02 01:24:38
ジオコーディングによる住所検索をして、マップを
サブウィンドウに表示させるようにしてますが、
ジオコーディングのコールバック関数が呼ばれる前に
サブウィンドウを閉じられるとエラーとなってしまいます。
ジオコーディングをキャンセルする方法又は、ジオコーディング側の
例外をキャッチする方法はありませんでしょうか。
因みにGUnloadでは駄目でした。

916:nobodyさん
08/07/02 12:13:36
コールバック関数の中で
サブウィンドウの(サブウィンドウのなかのGMAP)の存在を
チェックすればエラーにはならんとおもうよ

エラーハンドルで済ませたいなら
try catch したらいいだけじゃないか

917:nobodyさん
08/07/04 09:38:47
最近 googlemap + IE7でエラーがでるようになりました。
また、FIREFOX3でも別のエラーが出ています。

情報が少なくて困っているのですが、何かいい方法はないでしょうか・・・


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch