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

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

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

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

Q&A

解決済

2回答

1514閲覧

googlemapsのマーカーについて

yoshinori_w

総合スコア12

JavaScript

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

0グッド

0クリップ

投稿2016/07/17 13:02

編集2016/07/19 14:19

複数のgooglemapsをタブで切り替えしたく
こちらの記事を参考にさせていただき

記事
https://www.softel.co.jp/blogs/tech/archives/4069

サンプル
https://www.softel.co.jp/blogs/tech/archives/demo/jquery%E3%81%A0%E3%81%91%E3%81%A7%E3%82%BF%E3%83%96%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB-2-4

何とか表示・タブで切り替えすることができました。

この各マップにマーカーを表示させたく、他の方の記事なども参考に色々試してみたのですが、基本的な知識に乏しいため表示すらままなりません。

上記のサンプルスクリプトに追記する形でマーカーを表示させる方法をご教授いただけないでしょうか。

追記:マーカーは標準のものを各マップ中央に1つ(mapOptionsで座標指定しているポイント)表示したいです。
追記:下記にコード記載いたしました。

javascript

1$(function() { 2 var maps = {}; 3 var markers = []; 4 var mapOptions = { 5 center: new google.maps.LatLng(35.6713419,139.76541450000002), 6 zoom: 15, 7 mapTypeId: google.maps.MapTypeId.ROADMAP 8 }; 9 markers[0] = new google.maps.Marker( { 10 map: map, 11 position: new google.maps.LatLng(35.6713419,139.76541450000002), 12 }); 13 maps['#panel1'] = new google.maps.Map(document.getElementById("map_canvas1"), mapOptions); 14 15 var mapOptions = { 16 center: new google.maps.LatLng(35.6933865,139.76615270000002), 17 zoom: 15, 18 mapTypeId: google.maps.MapTypeId.ROADMAP 19 }; 20 markers[1] = new google.maps.Marker( { 21 map: map, 22 position: new google.maps.LatLng(35.6933865,139.76615270000002), 23 }); 24 maps['#panel2'] = new google.maps.Map(document.getElementById("map_canvas2"), mapOptions); 25 26 var mapOptions = { 27 center: new google.maps.LatLng(35.6712724,139.76160089999996), 28 zoom: 15, 29 mapTypeId: google.maps.MapTypeId.ROADMAP 30 }; 31 markers[2] = new google.maps.Marker( { 32 map: map, 33 position: new google.maps.LatLng(35.6712724,139.76160089999996), 34 }); 35 maps['#panel3'] = new google.maps.Map(document.getElementById("map_canvas3"), mapOptions); 36 37 $('#tabs a[href^="#panel"]').click(function(){ 38 $("#tabs .panel").hide(); 39 $(this.hash).fadeIn(); 40 google.maps.event.trigger(maps[this.hash], 'resize'); 41 return false; 42 }); 43 44 $('#tabs a[href^="#panel"]:eq(0)').trigger('click'); 45 46 }); 47

javascript

1$(function() { 2 var maps = {}; 3 var markers = []; 4 var mapOptions = { 5 center: new google.maps.LatLng(35.6713419,139.76541450000002), 6 zoom: 15, 7 mapTypeId: google.maps.MapTypeId.ROADMAP 8 }; 9 maps['#panel1'] = new google.maps.Map(document.getElementById("map_canvas1"), mapOptions); 10 11 var mapOptions = { 12 center: new google.maps.LatLng(35.6933865,139.76615270000002), 13 zoom: 15, 14 mapTypeId: google.maps.MapTypeId.ROADMAP 15 }; 16 maps['#panel2'] = new google.maps.Map(document.getElementById("map_canvas2"), mapOptions); 17 18 var mapOptions = { 19 center: new google.maps.LatLng(35.6712724,139.76160089999996), 20 zoom: 15, 21 mapTypeId: google.maps.MapTypeId.ROADMAP 22 }; 23 maps['#panel3'] = new google.maps.Map(document.getElementById("map_canvas3"), mapOptions); 24 25 markers[0] = new google.maps.Marker( { 26 map: map, 27 position: new google.maps.LatLng(35.6713419,139.76541450000002), 28 }); 29 markers[1] = new google.maps.Marker( { 30 map: map, 31 position: new google.maps.LatLng(35.6933865,139.76615270000002), 32 }); 33 markers[2] = new google.maps.Marker( { 34 map: map, 35 position: new google.maps.LatLng(35.6712724,139.76160089999996), 36 }); 37 38 $('#tabs a[href^="#panel"]').click(function(){ 39 $("#tabs .panel").hide(); 40 $(this.hash).fadeIn(); 41 google.maps.event.trigger(maps[this.hash], 'resize'); 42 return false; 43 }); 44 45 $('#tabs a[href^="#panel"]:eq(0)').trigger('click'); 46 47 }); 48

お二方にご回答をいただき修正してみたところ、下記のコードでマーカーが表示されました。

javascript

1 2$(function() { 3 var maps = {}; 4 var mapOptions = { 5 center: new google.maps.LatLng(35.6713419,139.76541450000002), 6 zoom: 15, 7 mapTypeId: google.maps.MapTypeId.ROADMAP 8 }; 9 maps['#panel1'] = new google.maps.Map(document.getElementById("map_canvas1"), mapOptions); 10 11 var mapOptions = { 12 center: new google.maps.LatLng(35.6933865,139.76615270000002), 13 zoom: 15, 14 mapTypeId: google.maps.MapTypeId.ROADMAP 15 }; 16 maps['#panel2'] = new google.maps.Map(document.getElementById("map_canvas2"), mapOptions); 17 18 var mapOptions = { 19 center: new google.maps.LatLng(35.6712724,139.76160089999996), 20 zoom: 15, 21 mapTypeId: google.maps.MapTypeId.ROADMAP 22 }; 23 maps['#panel3'] = new google.maps.Map(document.getElementById("map_canvas3"), mapOptions); 24 25 var markers = []; 26 markers[0] = new google.maps.Marker( { 27 map: maps['#panel1'] , 28 position: new google.maps.LatLng(35.6713419,139.76541450000002), 29 }); 30 markers[1] = new google.maps.Marker( { 31 map: maps['#panel2'] , 32 position: new google.maps.LatLng(35.6933865,139.76615270000002), 33 }); 34 markers[2] = new google.maps.Marker( { 35 map: maps['#panel3'] , 36 position: new google.maps.LatLng(35.6712724,139.76160089999996), 37 }); 38 39 $('#tabs a[href^="#panel"]').click(function(){ 40 $("#tabs .panel").hide(); 41 $(this.hash).fadeIn(); 42 google.maps.event.trigger(maps[this.hash], 'resize'); 43 return false; 44 }); 45 46 $('#tabs a[href^="#panel"]:eq(0)').trigger('click'); 47 48 }); 49

なんとかマーカーを表示させることができたのですが、マップのセンターがずれていることに今更ながら気づきました。(2番目のタブと3番目のタブに読み込んだマップ)
今回の質問内容とは異なる問題かと思いますので、一旦終了にすべきか迷っているのですが、改善策をネットで探してみたところ、私のレベルではここまでのコードを修正して改善できる自身がありません。
もし、改善策お分かりになる方いらっしゃれば、ご教授いただけませんでしょうか。

追記:HTMLソースと画像を添付してみます。

html

1<!doctype html> 2<html> 3<head> 4<meta charset="utf-8"> 5<title>テスト</title> 6<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 7<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 8<style> 9.nav-pills li a { 10 border: 1px solid #cccccc; 11} 12.nav-pills li a.active { 13 border: 1px solid #02acf8; 14 background:#02acf8; 15 color:#ffffff; 16} 17</style> 18<script type="text/javascript"> 19$(function() { 20 var maps = {}; 21 var mapOptions = { 22 center: new google.maps.LatLng(35.6713419,139.76541450000002), 23 zoom: 15, 24 mapTypeId: google.maps.MapTypeId.ROADMAP 25 }; 26 maps['#panel1'] = new google.maps.Map(document.getElementById("map_canvas1"), mapOptions); 27 28 var mapOptions = { 29 center: new google.maps.LatLng(35.6933865,139.76615270000002), 30 zoom: 15, 31 mapTypeId: google.maps.MapTypeId.ROADMAP 32 }; 33 maps['#panel2'] = new google.maps.Map(document.getElementById("map_canvas2"), mapOptions); 34 35 var mapOptions = { 36 center: new google.maps.LatLng(35.6712724,139.76160089999996), 37 zoom: 15, 38 mapTypeId: google.maps.MapTypeId.ROADMAP 39 }; 40 maps['#panel3'] = new google.maps.Map(document.getElementById("map_canvas3"), mapOptions); 41 42 var markers = []; 43 markers[0] = new google.maps.Marker( { 44 map: maps['#panel1'] , 45 position: new google.maps.LatLng(35.6713419,139.76541450000002), 46 }); 47 markers[1] = new google.maps.Marker( { 48 map: maps['#panel2'] , 49 position: new google.maps.LatLng(35.6933865,139.76615270000002), 50 }); 51 markers[2] = new google.maps.Marker( { 52 map: maps['#panel3'] , 53 position: new google.maps.LatLng(35.6712724,139.76160089999996), 54 }); 55 56 $('#tabs a[href^="#panel"]').click(function(){ 57 $("#tabs .panel").hide(); 58 $(this.hash).fadeIn(); 59 google.maps.event.trigger(maps[this.hash], 'resize'); 60 return false; 61 }); 62 63 $('#tabs a[href^="#panel"]:eq(0)').trigger('click'); 64 65 }); 66</script> 67</head> 68 69<body> 70 <div id="tabs" class="col-md-6"> 71 <ul class="nav nav-pills"> 72 <li class="tab-btn1"><a href="#panel1" class="active">銀座4</a></li> 73 <li class="tab-btn2"><a href="#panel2">神田1</a></li> 74 <li class="tab-btn3"><a href="#panel3">銀座6</a></li> 75 </ul> 76 <div id="panel1" class="panel"> 77 <div id="map_canvas1" style="width:500px; height:400px;"></div> 78 </div> 79 <div id="panel2" class="panel"> 80 <div id="map_canvas2" style="width:500px; height:400px;"></div> 81 </div> 82 <div id="panel3" class="panel"> 83 <div id="map_canvas3" style="width:500px; height:400px;"></div> 84 </div> 85 </div> 86</body> 87</html>

上記のHTMLソースでタブ銀座4は問題なく座標指定した銀座4丁目がセンターに表示されポインターもセンターに表示されます。

イメージ説明

タブ神田1と銀座6はマップのセンターが座標指定した位置ではなく
センターに表示したい座標(ポインターの位置も同様)が左上の見切れた場所にあります。

イメージ説明

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

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

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

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

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

kei344

2016/07/17 13:24

ご自身で書かれたコードを質問文に追記いただいたほうが回答を得られやすいと思います。
yoshinori_w

2016/07/17 13:54

アドバイスありがとうございます。コード追記いたしました。
退会済みユーザー

退会済みユーザー

2016/07/17 14:14

マーカーはどこに表示したいのか、マップの中心?任意の場所?マーカーの数は?複数のマーカーを表示したいのなら、その緯度経度の情報はどこに持つの?など、具体的な仕様が提示されていません。
yoshinori_w

2016/07/17 14:20

情報が不足しておりすみませんでした。
guest

回答2

0

yoshinori_w さんへ

はじめまして。
概ね、kei344さんのご指摘通りなのですが、処理の順番と変数(mapOptions)の上書きが原因ですね。

mapOptionsを配列にするか、mapOptionsの設定→maps生成→markers設定とすればよろしいかと。

投稿2016/07/19 02:51

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

yoshinori_w

2016/07/19 12:20

ご回答ありがとうございます。 処理の順番というヒントを元になんとかマップとマーカーを表示させることができました 。 現在別の問題が発生しまして、ルール違反かもしれないので一旦この質問を閉じるべきか悩み中なのですが、助かりました。ありがとうございました。
guest

0

ベストアンサー

このあたりとかを読めば出来ると思います。

【Google Maps JavaScript API v3の使い方まとめ (サンプルコード付き)】
https://syncer.jp/google-maps-javascript-api-matome#sec-4

投稿2016/07/17 16:30

kei344

総合スコア69398

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

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

yoshinori_w

2016/07/19 00:08

ご回答ありがとうございます。 参考サイトを見ながら色々なところに該当ソースを編集して挿入してみたのですがマーカーは表示されませんでした。 基本的な事が分かっていないので、いきなり応用は難しそうですね。 参考サイト良く読んでもう少し基本を理解してみたいと思います。
kei344

2016/07/19 01:49

どのように書いたかを質問文に追記してみてください。(現在質問文に有るコードはそのままで新たに追記してください)
yoshinori_w

2016/07/19 02:04

気にかけていただきありがとうございます。 ①②のように考え付く場所に入れてみました。 参考サイトにある 配列でなく個々に指定する marker1 = new google.maps.Marker( {...} ) ; の方法でも試してみたのですが表示されませんでした。 何処がどう悪いのかも分からず、お手数をおかけいたしますが、また見ていただけるようでしたらよろしくお願いします。
yoshinori_w

2016/07/19 02:08

map: map, を map: maps, に変えてみたり削除したり、考え付くところは色々いじってみたのですが全てあてずっぽうなので煮詰まってしまいました。
kei344

2016/07/19 13:29 編集

google.maps.Marker( { map: my_map,・・・ の `my_map` には new google.maps.Map で作った 変数を入れます。( ex.「 maps['#panel3'] 」 ) 1,2はどちらも同じ挙動をするはずなので、どちらを使っても良いと思います。
yoshinori_w

2016/07/19 12:17

何度もありがとうございます。 ご教授いただいた方法で、それぞれのマップにマーカーを表示させることができました。 ただ、できたとばかり思っていたgooglemapsのタブ表示がセンター位置ずれていたことに今更気が付きました。 これは今回の質問内容とは異なる問題かと思いますので試行錯誤してみたいと思います。 ありがとうございました。
kei344

2016/07/19 13:32

「タブ表示がセンター位置ずれていた」というのは「どのようになるべきところ」が「どうなっているか」をより具体的に提示ください。できれば画像などで「ここをこうしたい」など指示いただいたほうがわかるかもしれません。
yoshinori_w

2016/07/19 14:22

親切に本当にありがとうございます。 HTMLコードや画像を追加いたしました。
kei344

2016/07/19 15:40

処理のながれ: ・タブの切り替え時にマップのセンターを取得する ・それを連想配列で保存しておく ・google.maps.event.trigger 後に保存されているその値でセンターを指定する 連想配列は var maps = {};の次の行くらいに var now_center = {};みたいな感じですかね。あとは、getCenter()とかsetCenter()をつかって、回答に提示したサイトを見ながら頑張ってみてください。
yoshinori_w

2016/07/20 05:58

ご丁寧にありがとうございます。 こちらは少し時間がかかりそうなので、お教えいただいた方法で色々やってみます。 一番の問題が解決し、本当に助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問