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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

0回答

2747閲覧

googlemapマーカー絞り込みについて

mtw1219mtw

総合スコア4

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/11/07 05:38

前提・実現したいこと

当方、googlemap APIを用いて、サイトを作成しております。
マーカーを複数表示させ、そこからチェックボックスを用いて、
条件設定することで、表示されているマーカーが徐々に絞り込まれる
仕様を作りたいと考えています。

イメージ:https://map.mcdonalds.co.jp/

発生している問題・エラーメッセージ

インターネット上から、ラジオボタンを用いて、 マーカーをカテゴリー別に表示させる方法が紹介 されているサイトがあり、そこをヒントに継ぎはぎで コードを組み立てました。 しかしながら、チェックボックスにチェックをいれた際に、 適切に絞り込ません。 絞り込まれているというか、単純に表示が切り替わっているだけのようです。 インターネット上から長い間、調べているのですが、 当方初心者につき、なかなかヒントが見いだせず困っています。 お知恵のある方がいらっしゃいましたら、ご指導を頂ければと 思っています。宜しくお願い致します。 ※下記ソースはhtml、css、javascriptすべて含まれています。 googlemapを表示させるためのいわゆる、APIキーは表示していません。 ご了承下さい。(●●●としています)

該当のソースコード

html

1<html> 2<head> 3<meta http-equiv="content-type" content="text/html; charset=utf-8"/> 4<meta http-equiv="content-language" content="ja"/> 5<meta http-equiv="Content-Style-Type" content="text/css"/> 6<meta http-equiv="Content-Script-Type" content="text/javascript"/> 7<script type="text/javascript" src="https://maps-api-ssl.google.com/maps/api/js?sensor=false&key=●●●●●●●"></script> 8 9 10<SCRIPT language="JavaScript"> 11var stationList=[ 12{"latlng":[35.68124535730683,139.76711004785045],name:'東京駅',icon:"https://zentoren.or.jp/img/map_icon1.png",cate0:1,cate1:1,cate2:1,cate3:1,cate4:1,cate5:1}, 13{"latlng":[35.67496146016916,139.7627367515206],name:'有楽町駅',icon:"https://zentoren.or.jp/img/map_icon1.png",cate0:1,cate1:0,cate2:0,cate3:0,cate4:1,cate5:1}, 14{"latlng":[35.666388431398566,139.75833477085803],name:'新橋駅',icon:"https://zentoren.or.jp/img/map_icon1.png",cate0:1,cate1:0,cate2:0,cate3:1,cate4:1,cate5:1}, 15{"latlng":[35.628491751490785,139.73875835889544],name:'品川駅',icon:"https://zentoren.or.jp/img/map_icon1.png",cate0:1,cate1:1,cate2:1,cate3:1,cate4:1,cate5:0}, 16{"latlng":[35.5314352615592,139.69688397085815],name:'川崎駅',icon:"https://zentoren.or.jp/img/map_icon1.png",cate0:1,cate1:1,cate2:1,cate3:1,cate4:1,cate5:0}, 17{"latlng":[35.4658292308726,139.6223219171793],name:'横浜駅',icon:"https://zentoren.or.jp/img/map_icon1.png",cate0:1,cate1:0,cate2:0,cate3:1,cate4:1,cate5:1}, 18{"latlng":[35.25645914932192,139.15539822914184],name:'小田原駅',icon:"https://zentoren.or.jp/img/map_icon1.png",cate0:1,cate1:0,cate2:1,cate3:1,cate4:0,cate5:0} 19]; 20 21var infoWnd = new google.maps.InfoWindow(); 22var markerController = new google.maps.MVCObject(); 23function initialize() { 24geocoder = new google.maps.Geocoder(); 25var mapDiv = document.getElementById("map"); 26mapCanvas = new google.maps.Map(mapDiv); 27mapCanvas.setMapTypeId(google.maps.MapTypeId.ROADMAP); 28 29var i, choise = [ 30document.getElementById("cate0"), 31document.getElementById("cate1"), 32document.getElementById("cate2"), 33document.getElementById("cate3"), 34document.getElementById("cate4"), 35document.getElementById("cate5") 36 ]; 37 38for (i = 0; i < choise.length; i++) { 39 google.maps.event.addDomListener(choise[i], "click", selectChanged); 40 } 41 42 var bounds = new google.maps.LatLngBounds(); 43 var station, latlng; 44 45for ( i = 0; i < stationList.length; i++) { 46 station = stationList[i]; 47 latlng = new google.maps.LatLng(station.latlng[0], station.latlng[1]); 48 bounds.extend(latlng); 49 var marker = createMarker({ 50 map : mapCanvas, 51 position : latlng, 52 icon: stationList[i].icon, 53 others : station 54 }); 55 56createMarkerButton(marker); 57 } 58 mapCanvas.panTo(new google.maps.LatLng(35.56690133592941, 139.71484922225966)); 59 mapCanvas.setZoom(9); 60 markerController.set("select", "cate0"); 61 google.maps.event.trigger(choise[6], "click"); 62 } 63 64 function selectChanged() { 65 var selectedVal = this.value; 66 markerController.set("select", selectedVal); 67 } 68 69 //マーカーがクリックされたら、情報ウィンドウを表示 70 function createMarker(params) { 71 var marker = new google.maps.Marker(params); 72 google.maps.event.addListener(marker, "click", function() { 73 infoWnd.setContent("<strong>" + params.others.name + "</strong>"); 74 infoWnd.open(params.map, marker); 75 }); 76 77 // marker.select = markerController.select として連動させる。 78 // markerController.select が変化すると、marker.select も変化して 79 // select_changedイベントが発生する 80 marker.bindTo("select", markerController, "select"); 81 google.maps.event.addListener(marker, "select_changed", changeMarkerVisibility); 82 return marker; 83 } 84 85 86 //markerControllerのselectプロパティが変化したら、 87 //params.others.の値を調べてマーカーの表示/非表示を変更する 88 function changeMarkerVisibility() { 89 //this は markerを指す 90 var marker = this; 91 var others = marker.get("others"); 92 93 //選択された値 94 var selectedVal = marker.get("select"); 95 96 97 // 1ならtrue、0ならfalse 98 marker.setVisible( others[selectedVal] ? true : false ); 99 } 100 101 102 function createMarkerButton(marker) { 103 var others = marker.get("others"), 104 i, name, ul, li, 105 listNames = [ 106 "cate0", 107 "cate1", 108 "cate2", 109 "cate3", 110 "cate4", 111 "cate5" 112 ]; 113 114 115 } 116 117 118google.maps.event.addDomListener(window,"load",initialize); 119 120</SCRIPT> 121 122 123<style type="text/css"> 124#frame{position:relative;width:100%;height:600px;border:1px solid #ccc} 125#site-box-onlymap{ 126 background-color : #FFFFFF; 127 width : 1500px ; 128 margin : 1.5px auto; 129 font-size : 15px ; 130 letter-spacing:-0.5px; 131 text-align:left; 132} 133</style> 134 135</head> 136 137<!-----------------------↑ここまでhead---------------------------------> 138 139 140 141 142<body background="img/haikei.png" bgproperties="fixed" onload="initialize()"> 143<!-------------↓ここIE調整↓-------------> 144<div style="text-align:center;"> 145<!-------------↑ここIE調整↑-------------> 146<div id="mapright-box"><!--map--><div id="map" style="height:95%"></div><!--map--></div> 147<div id="mapleft-box"> 148<a href="" onclick="location.reload();return false"><B>全体表示</B></a> 149<input type="checkbox" name="shinkansen" value="cate0" id="cate0"> 150<HR> 151<B>カテゴリー</B><BR> 152<input type="checkbox" name="shinkansen" value="cate1" id="cate1">のぞみ停車 153<input type="checkbox" name="shinkansen" value="cate2" id="cate2">こだま停車 154<input type="checkbox" name="shinkansen" value="cate3" id="cate3">東海道線停車 155<input type="checkbox" name="shinkansen" value="cate4" id="cate4">京浜東北線停車 156<input type="checkbox" name="shinkansen" value="cate5" id="cate5">地下鉄接続 157</div> 158<!-------------↓ここIE調整↓-------------> 159</div> 160<!-------------↑ここIE調整↑-------------> 161</body> 162</html>

試したこと

ここに問題に対して試したことを記載してください。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問