
現在フォトビューワーを作っております。
フリッカーからジオタグ付きの画像を取得し、最新から15枚をサムネイル表示。
サムネイルをクリックすると拡大画像が表示され、拡大画像をクリックすると、
ジオタグのグーグルマップが表示されるというものです。
問題は、拡大画像をクリックした際、マップの一部分が灰色になり、まともに表示されない場合があるのです。
ページを開く→サムネイルクリック→拡大画像クリック→残念マップ。
残念マップ→サムネイルクリック→拡大画像クリック→正常マップ。
一度マップを表示してから、サムネイルクリック→拡大画像クリック→の流れだと、マップは正常に表示されます。
サムネイルクリック→拡大画像クリック→サムネイルクリックの場合、次に表示されるマップは残念マップです。
調べていく中で.css({display:"none"});があると発生するという事も知り、色々と試したのですが、どうにも上手くいきません。
説明下手で申し訳ないのですが、どなたかご教示いただけないでしょうか。
よろしくお願いいたします。
// JavaScript Document
var photoArray = new Array();
$(function(){
//alert("test");
var searchURL = "http://api.flickr.com/services/rest/?method=flic …
$.ajax({
url : searchURL,
dataType : "jsonp",
jsonp : "jsonFlickrApi"
});
});
function jsonFlickrApi(data){
console.log(data);
//alert("jsonFLickrApi:"+data.photos.photo);
$(data.photos.photo).each(function(i) {
//console.log(this.latitude,this.longitude);
var geo = {lat:this.latitude, lng:this.longitude};
var imgTitle = {title:this.title};
//console.log(imgTitle.title);
var file = "http://farm" + this.farm + ".static.flickr.com/" + this.server + "/" + this.id + "_" + this.secret + "_" + "z" +".jpg"
//console.log(file);
var thumbnail = "<img src='"+file+"' width='60' height='50' data-lat='"+geo.lat+"' data-lng='"+geo.lng+"' data-title='"+imgTitle.title+"' style='margin:-6px 6px 37px 14px;'>";
//console.log(thumbnail);
$("#photoArray").css("height", Math.floor(photoArray.length)/5*110);
var h = $("#photoArray").attr("height");
$("#photoArray p").append('<img src="images/photoBg.png" width="70" height="75" style="margin:-12px 0 18px 10px;" top: -' + h + 'px;">').fadeIn("slow");
$("#photoArray").append(''+thumbnail+'').fadeIn("slow");
});
//マウスオーバー時のサムネイルopacity
$("#photoArray img").hover(function(){
$(this).stop(true).fadeTo("fast", 0.5);},function(){
$(this).fadeTo("fast",1);
});
//サムネイルをクリックすると実行される処理
$("#photoArray img").live("click",function(){
//console.log($(this).data('lat'), $(this).data('lng'), $(this).data('title'));
var img = $(this).attr("src");
var title = $(this).data('title');
//画像の座標を変数に入れる
var latLng = new google.maps.LatLng($(this).data('lat'), $(this).data('lng'));
var myOptions = {zoom: 14,center: latLng,mapTypeId: google.maps.MapTypeId.ROADMAP};
var map = new google.maps.Map(document.getElementById("googleMap"),myOptions);
var marker = new google.maps.Marker({position: latLng, map: map});
//console.log(latLng);
$("#bigPhoto").fadeOut("slow",function(){
$("#bigPhoto").html("<img src='"+img+"' width='368' height='290'>" + '<p>' + title + '</p>').fadeIn("slow");
});
//console.log(title);
$("#googleMap").fadeOut("slow").css({display:"none"});
});
$("#bigPhoto img").live("click",function(){
$("#bigPhoto").fadeOut("slow", function(){
$("#googleMap").fadeIn("slow");
});
});
}
No.1ベストアンサー
- 回答日時:
だいぶ前にテストしてみた記憶なので、少々あやふやですが…
display:noneの要素に対してmapのセッティングをしてロードするとうまく表示できないみたいです。
画面上で見せたくない場合は、
1)visibility:hiddenを利用して非表示にする
2)ネガティブマージンなどを利用して要素を一時的に画面外に置く
3)z-index指定他で他の要素の下において見えない状態にする
などの方法で見えない状態になっている場合は、mapが表示できたように記憶しています。
(やや曖昧な記憶なので、ご自身で再度ご確認ください)
どのような文書構造とレイアウトなのかはわかりませんが、状況に応じてdisplay:none以外の方法を使用すれば安定して表示可能にできるものと思います。
一方で、ライブラリ(jQueryか?)をご利用なさっているようですが、fadeOut()などの結果display:noneに設定されてしまう可能性がありますのでご注意を。(←こちらも未確認ですが…)
ありがとうございます!
display:noneをvisibility:hiddenに変更し、最後の$("#googleMap").fadeIn("slow")に.css({visibility:""});を追加したらいけました!
おっしゃる通り、jQueryを使用しています。
display:noneだけでなくfadeOut()も外すことで機能するようになりました。
本当にありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンストラクタでvar ?
-
ローカルにあるファイルを検索...
-
ジェネレーターの作り方
-
HTMLで作った時報アプリが動き...
-
HTMLにWSHを組み込む
-
JavaScriptで決まった「時刻」...
-
Google Maps API v2 ルートのシ...
-
C# 演算 奇数と偶数 表現の仕方
-
船のゲームを作っているのです...
-
i を小数点以下 j 桁で丸めるには
-
スクリプトのフルパス取得したい
-
Javascript 特定のフォルダのデ...
-
JAVASCRIPTで万年カレンダーを...
-
C#で、ContextMenuStripに動的...
-
Javascriptで文字列から、任意...
-
パス付きサイトのjavascript解析
-
ASP.NET MVCでObjectをjsに渡す
-
1分毎にHTMLを切り替えるJavaSc...
-
javascriptで複数キーワード検...
-
GASのエラー「undefined からプ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C#で、ContextMenuStripに動的...
-
ASP.NET MVCでObjectをjsに渡す
-
ローカルにあるファイルを検索...
-
C#OpenCv V4にのエラーに関する...
-
google apps scriptの終了のさせ方
-
イベントが初めの一回しか起き...
-
ジェネレーターの作り方
-
JavaScriptで文字列の特定文字...
-
javascriptでテーブルに追加し...
-
なぜmatchメソッドがエラーにな...
-
ASP.NETのコントロールの値をJa...
-
javascriptでiframeのURL変更は?
-
翌月を取得するGASが分かりません
-
1日1回だけ引けるjavascriptお...
-
商品コードを入力で、商品名、...
-
JavaScriptで平日のみをカウン...
-
jsによって検索プルダウン、都...
-
C# 演算 奇数と偶数 表現の仕方
-
GASでundefinedエラーが出ます
-
gas スプレッドシートがアクテ...
おすすめ情報