Google Street Viewみたいな奴を作るとしたら?
Google Mapみたいな奴を作るとしたら?で頑張ってみたけど、MapじゃなくてStreet Viewだね。
html
<!doctype html> <html lang="ja"> <head> <meta charset="UTF-8" /> <title>GoogleMapModoki</title> <script src="js/jquery.js" type="application/x-javascript" charset="utf-8"></script> <script src="js/change_img4.js" type="text/javascript" charset="utf-8"></script> <link rel="stylesheet" type="text/css" href="css/gmm4.css"> <style type="text/css"></style> </head> <body> <div id="pict"> <div id="h1w1" class="arrowbox"></div> <div id="h1w2" class="arrowbox"></div> <div id="h1w3" class="arrowbox"></div> <div id="h2w1" class="arrowbox"></div> <div id="h2w2" class="arrowbox"></div> <div id="h2w3" class="arrowbox"></div> <div id="h3w1" class="arrowbox"></div> <div id="h3w2" class="arrowbox"></div> <div id="h3w3" class="arrowbox"></div> </div> </body> </html>
#pict{ width: 1027px; height: 768px; border: 1px solid gray; background: url(../img/msc_table2/1-1-1.jpg); float: left; } .arrowbox{ float: left; width: 33%; height: 33%; border: 1px solid gray; } #h1w2, #h2w1, #h2w3, #h3w2{ background: url(../img/sample/arrow.gif) no-repeat center center; } #h2w1{ -webkit-transform: rotate(-90deg); -moz-transform: rotate(-90deg); } #h2w3{ -webkit-transform: rotate(90deg); -moz-transform: rotate(90deg); } #h3w2{ -webkit-transform: rotate(180deg); -moz-transform: rotate(180deg); } #h1w1{ background: url(../img/sample/left.gif) no-repeat center center; } #h1w3{ background: url(../img/sample/right.gif) no-repeat center center; }
js
//初期設定 var img_path = "img/msc_table2/"; function splitName(name){ var tmpPath = name.split("/"); var tmpName = tmpPath[tmpPath.length-1].slice(0, tmpPath[tmpPath.length-1].length-2).split("."); var vwd = tmpName[0].split("-"); return vwd; } function step_to(name, way){ //移動するところ var vwd=splitName(name); var v=eval(vwd[0]);//縦 var w=eval(vwd[1]);//横 var d=eval(vwd[2]);//方向 if(((way=="ue") && (d==1)) || ((way=="hidari") && (d==2)) || ((way=="sita") && (d==3)) || ((way=="migi") && (d==4))){ v=v-1; }else if(((way=="migi") && (d==1)) || ((way=="ue") && (d==2)) || ((way=="hidari") && (d==3)) || ((way=="sita") && (d==4))){ w=w+1; }else if(((way=="sita") && (d==1)) || ((way=="migi") && (d==2)) || ((way=="ue") && (d==3)) || ((way=="hidari") && (d==4))){ v=v+1; }else if(((way=="hidari") && (d==1)) || ((way=="sita") && (d==2)) || ((way=="migi") && (d==3)) || ((way=="ue") && (d==4))){ w=w-1; } var rtn="url('"+img_path+v+"-"+w+"-"+d+".jpg')"; return rtn; } function turn_to(name, way){ var vwd=splitName(name); var v=eval(vwd[0]);//縦 var w=eval(vwd[1]);//横 var d=eval(vwd[2]);//方向 d=d+way; if(d==5){d=1;} if(d==0){d=4;} var rtn="url('"+img_path+v+"-"+w+"-"+d+".jpg')"; return rtn; } $(function(){ var img_path="img/msc_table/"; $("#h1w2").click(function(){ //上に移動、vを1減らす var getPath=$("#pict").css("background-image"); $("#pict").css("background-image", step_to(getPath, "ue")); return false; }); $("#h3w2").click(function(){ //下に移動、vを1足す var getPath=$("#pict").css("background-image"); $("#pict").css("background-image", step_to(getPath, "sita")); return false; }); $("#h2w3").click(function(){ //右に移動 hに1を足す var getPath=$("#pict").css("background-image"); $("#pict").css("background-image", step_to(getPath, "migi")); return false; }); $("#h2w1").click(function(){ //左に移動 hから1を引く var getPath=$("#pict").css("background-image"); $("#pict").css("background-image", step_to(getPath, "hidari")); return false; }); $("#h1w1").click(function(){ //左に回転 hから1を引く var getPath=$("#pict").css("background-image"); $("#pict").css("background-image", turn_to(getPath, -1)); return false; }); $("#h1w3").click(function(){ //右に回転 hに1を足す var getPath=$("#pict").css("background-image"); $("#pict").css("background-image", turn_to(getPath, 1)); return false; }); });
とりあえずは動くようになった。
問題「画像がなかったときに何も表示されないし、リロードで再表示するしかない」
画像がなかったら
$.ajaxのsuccessとerrorで出来た。動かしてみてわかったのはFirefox限定になっていること。
js
//初期設定 var img_path = "img/msc_table2/"; function splitName(name){ var tmpPath = name.split("/"); var tmpName = tmpPath[tmpPath.length-1].slice(0, tmpPath[tmpPath.length-1].length-2).split("."); var vwd = tmpName[0].split("-"); return vwd; } function step_to(name, way){ //移動するところ var vwd=splitName(name); var v=eval(vwd[0]);//縦 var w=eval(vwd[1]);//横 var d=eval(vwd[2]);//方向 if(((way=="ue") && (d==1)) || ((way=="hidari") && (d==2)) || ((way=="sita") && (d==3)) || ((way=="migi") && (d==4))){ v=v-1; }else if(((way=="migi") && (d==1)) || ((way=="ue") && (d==2)) || ((way=="hidari") && (d==3)) || ((way=="sita") && (d==4))){ w=w+1; }else if(((way=="sita") && (d==1)) || ((way=="migi") && (d==2)) || ((way=="ue") && (d==3)) || ((way=="hidari") && (d==4))){ v=v+1; }else if(((way=="hidari") && (d==1)) || ((way=="sita") && (d==2)) || ((way=="migi") && (d==3)) || ((way=="ue") && (d==4))){ w=w-1; } var url_path=img_path+v+"-"+w+"-"+d+".jpg"; change_bgimg(url_path); return false; } function change_bgimg(url_path){ var bg_path="url('"+url_path+"')"; $.ajax({ type : "get", url : url_path, success : function(){ $("#pict").css("background-image", bg_path); }, error : function(){ alert("画像はありません"); } }); } function turn_to(name, way){ var vwd=splitName(name); var v=eval(vwd[0]);//縦 var w=eval(vwd[1]);//横 var d=eval(vwd[2]);//方向 d=d+way; if(d==5){d=1;} if(d==0){d=4;} var url_path=img_path+v+"-"+w+"-"+d+".jpg"; change_bgimg(url_path); return false; } $(function(){ var img_path="img/msc_table/"; $("#h1w2").click(function(){ //上に移動、vを1減らす var getPath=$("#pict").css("background-image"); step_to(getPath, "ue"); return false; }); $("#h3w2").click(function(){ //下に移動、vを1足す var getPath=$("#pict").css("background-image"); step_to(getPath, "sita"); return false; }); $("#h2w3").click(function(){ //右に移動 hに1を足す var getPath=$("#pict").css("background-image"); step_to(getPath, "migi"); return false; }); $("#h2w1").click(function(){ //左に移動 hから1を引く var getPath=$("#pict").css("background-image"); step_to(getPath, "hidari"); return false; }); $("#h1w1").click(function(){ //左に回転 hから1を引く var getPath=$("#pict").css("background-image"); turn_to(getPath, -1); // $("#pict").css("background-image", turn_to(getPath, -1)); return false; }); $("#h1w3").click(function(){ //右に回転 hに1を足す var getPath=$("#pict").css("background-image"); turn_to(getPath, 1); // $("#pict").css("background-image", turn_to(getPath, 1)); return false; }); });