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

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

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

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

Q&A

解決済

2回答

1502閲覧

googleマップでウインドウサイズに応じてzoomを変更したい。

Treapyon

総合スコア13

Google マップ

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

0グッド

0クリップ

投稿2018/11/08 05:22

前提・実現したいこと

googlemapとphpのdbを使っての複数のピンを立てることまではうまくいきました。
そのうえで、pcでのzoom スマホでのzoomをウィンドウサイズで変更したいです。
zoom のサイズに変数zomを入れてますが、if文が走らないです。
それでも、最後のzom=14が適用されて、表示は行けてますが、
ウインドウサイズを変更しても、地図が縮小されません。
よろしく、ご鞭撻お願いいたします。

function initMap() { if (0 <= window.innerWidth <= 480) var zom = 6 else if (480 < window.innerWidth <= 620) var zom = 8 else if (620 < window.innerWidth <= 800) var zom = 10 else (800 < window.innerWidth ) var zom = 14; var map = new google.maps.Map(document.getElementById('map'), { center: new google.maps.LatLng(34.847945, 135.630651), zoom: zom });

該当のソースコード

if (0 <= window.innerWidth <= 480) var zom = 6 else if (480 < window.innerWidth <= 620) var zom = 8 else if (620 < window.innerWidth <= 800) var zom = 10 else (800 < window.innerWidth ) var zom = 14;

試したこと

window.innerWidthをいろいろ、変えてはみましたが、何かが足りないとはわかっていますが、何が足りないかが、わからないです。

補足情報(FW/ツールのバージョンなど)

お返事、お待ちしております。

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

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

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

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

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

guest

回答2

0

ベストアンサー

惜しい気はしますが、

javascriptのif文が想定通りに書けていませんし、条件文自体も指定の仕方が間違っているようです。

{} や、; は、省略しても問題なく動く部分もありますが、不具合の原因にもなります。
javascriptを書き慣れていないのであれば、省略しない方が良いと思いますよ。

■ if文
今のコードに、{}を付けて、条件毎に処理される範囲を明確にしてみましょう。

javascript

1if (0 <= window.innerWidth <= 480){ 2 var zom = 6 3}else if (480 < window.innerWidth <= 620){ 4 var zom = 8 5}else if (620 < window.innerWidth <= 800){ 6 var zom = 10 7}else{ (800 < window.innerWidth )} 8 var zom = 14;

最後だけelseなので、{} の中身が、 Treapyonさんが予定していない箇所を囲んでいますよね。
そして、if文の処理が終わった後で、var zom = 14;が、必ず実行されていることも分かるかと思います。

■ 条件文

数値の範囲を1つの条件となるような感じで0 <= window.innerWidth <= 480を書いたようですが、これはjsでは正しくチェックされません。
上限と下限のチェックは個別に書かなくてダメです。

正しい書き方は、0 <= window.innerWidth && window.innerWidth <= 480です。

ちなみにですが、数値の範囲のように見える0 <= window.innerWidth <= 480は、
実際には(0 <= window.innerWidth) <= 480として評価されています。

0 <= window.innerWidthtruetrue(数値にすると1) <= 480trueなので、
今のコードはいつでも最初のif文の分岐処理が実行されています。

投稿2018/11/08 07:05

mix-peach

総合スコア1910

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

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

Treapyon

2018/11/08 08:43

ありがとうございます。 if (0 <= window.innerWidth && window.innerWidth <= 480){ var zom = 12 }else if (480 < window.innerWidth && window.innerWidth <= 800){ var zom = 13 }else if (800 < window.innerWidth ){ var zom = 14 } で、結果出ました。
Treapyon

2018/11/08 08:54

追伸、 var zom = 14 } ; 最後に;をつけ忘れてました。 すごく助かりました。ありがとうございます。
guest

0

該当のソースコードに書かれている
var zom = x;
とはzomという変数に値を代入しているだけなので、以下のようにmapオブジェクトにセットする必要があります。
map.setZoom(x);

そして、この処理はウインドウサイズを変更したイベントで実行されていると思いますが、mapオブジェクトはinitMap関数のローカル変数になっているので、グローバル変数的にする必要があります。

※最新のGoogleMapの仕様は追っていません。setZoomでエラーになる場合は、最新の仕様に合わせて実装してください。

投稿2018/11/08 06:42

tabuu

総合スコア2449

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

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

Treapyon

2018/11/08 08:45

ありがとうございます。 もっと、勉強して、map.setZoom(); が、使えるよう、がんばります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問