質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

2回答

3086閲覧

Google Maps APIが、条件分岐で表示させようとするとエラーになる

samlife

総合スコア45

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2016/05/29 12:36

編集2016/05/29 12:37

Google Maps APIを利用して、ページごとに違うストリートビューを表示させようとしています。

ページごとに単体で設定するとうまく表示されますが、if文などでページごとに表示を変えるように条件分岐すると表示されません。

単体

JavaScript

1 <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyD0i8IpH4sIQ76FC6wt2sEp_AqiwZQqbLw"></script> 2<script> 3 function initialize() { 4 var fenway = new google.maps.LatLng(33.8085037,132.8172208); 5 var panoramaOptions = { 6 position: fenway, 7 pov: { 8 heading: 1, 9 pitch: 10 10 } 11 }; 12 panorama = new google.maps.StreetViewPanorama(document.getElementById('pano'),panoramaOptions); 13 14 var i = 220; 15 window.setInterval(function () { 16 panorama.setPov({ 17 heading: i, 18 pitch: 10, 19 zoom: 1 20 }); 21 i += 0.1; 22 }, 10); 23 } 24 25 google.maps.event.addDomListener(window, 'load', initialize); 26 27</script> 28

条件分岐
途中で確認のためにdocument.writeで表示させても、ちゃんとURLとviewpointは格納されています。

JavaScript

1<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyD0i8IpH4sIQ76FC6wt2sEp_AqiwZQqbLw"></script> 2 <script> 3 var panorama; 4 var viewpoint; 5 var url = window.location.href; 6 7 if (url == "http://www.sample.jp/"){ 8 viewpoint = "33.8530625,132.7524527"; 9 10 } else if (url == "http://www.sample.jp/public.html") { 11 viewpoint = "33.8816834,132.7548918"; 12 13 } else if (url == "http://www.sample.jp/faq.html"){ 14 viewpoint = "33.854079,132.7864186"; 15 } 16 17 document.write(url,viewpoint); 18 19 function initialize() { 20 var fenway = new google.maps.LatLng(viewpoint); 21 var panoramaOptions = { 22 position: fenway, 23 pov: { 24 heading: 1, 25 pitch: 10 26 } 27 }; 28 panorama = new google.maps.StreetViewPanorama(document.getElementById('pano'),panoramaOptions); 29 30 var i = 220; 31 window.setInterval(function () { 32 panorama.setPov({ 33 heading: i, 34 pitch: 10, 35 zoom: 1 36 }); 37 i += 0.1; 38 }, 10); 39 } 40 41 google.maps.event.addDomListener(window, 'load', initialize); 42 43</script>

ちなみに、Javascriptコンソールにはエラーは出ていません。

ちょっと原因が解らず困っております。
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

google.maps.LatLngの引数が文字列になっているのが問題なのだと思います。
下記のようにしてみてはどうでしょうか?
https://syncer.jp/google-maps-javascript-api-matome/latlng/

javascript

1var lat; 2var lng; 3if (url == "http://www.sample.jp/"){ 4 lat = 33.8530625; 5 lng = 132.7524527; 6 7} else if (url == "http://www.sample.jp/public.html") { 8 lat = 33.8816834; 9 lng = 132.7548918; 10} else if (url == "http://www.sample.jp/faq.html"){ 11 lat = 33.854079; 12 lng = 132.7864186; 13} 14 var fenway = new google.maps.LatLng(lat, lng);

投稿2016/05/29 15:10

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

samlife

2016/05/29 22:55

ありがとうございます。 これは配列では? と気づいたので、 var viewpoint = [33.8530625,132.7524527]; のように入れて、 var fenway = new google.maps.LatLng(viewpoint[0],viewpoint[1]); のようにしてみたら、表示はされました。 が、なぜかカクカクします・・・ 別の原因でしょうかね
退会済みユーザー

退会済みユーザー

2016/05/30 00:36

「カクカクする」というのは地図を動かすときにカクカクするのでしょうか? その現象は「単体」のときは起こらないのでしょうか?
guest

0

JavaScript

1var point = new google.maps.LatLng( 33.8085037, 132.8172208 ); 2```これと 3```JavaScript 4var point = new google.maps.LatLng( "33.854079, 132.7864186" ); 5```これは、意味が違います。 6 7前者は LatLng メソッドに 数字を2つ渡していて、後者はテキストをひとつ渡しています。(LatLngメソッドはテキストを受け付ける仕様になっていない) 8 9なので 10```JavaScript 11viewpoint_lat = 33.8530625; 12viewpoint_lng = 132.7524527; 13// (中略) 14var fenway = new google.maps.LatLng( viewpoint_lat, viewpoint_lng ); 15```16```JavaScript 17viewpoint = { lat: 33.8530625, lng: 132.7524527 }; 18// (中略) 19var fenway = new google.maps.LatLng(viewpoint); 20```と LatLngLiteral で書くかどちらかです。 21 22【Google Maps JavaScript API V3 Reference | Google Maps JavaScript API | Google Developers】 23[https://developers.google.com/maps/documentation/javascript/reference#LatLng](https://developers.google.com/maps/documentation/javascript/reference#LatLng)

投稿2016/05/29 15:06

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

samlife

2016/05/29 22:51

var point = new google.maps.LatLng( 33.8085037, 132.8172208 ); の場合、これは配列ということでいいのでしょうか? もし配列であれば、 var fenway = new google.maps.LatLng(point[0],point[1]); という入れ方でもいいでしょうか? というか、それでやってみましたが、表示はされました。 が、それが原因かわかりませんが、カクカクします。
kei344

2016/05/30 01:34

配列ではありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問