-
Notifications
You must be signed in to change notification settings - Fork 4
/
246.txt
206 lines (137 loc) · 9.98 KB
/
246.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
[19] [DFN[Google Maps]] は、 [[Google]] の[[地図]]サービスです。
[20] 単独の[[Webサービス]]として提供されている他、 [[Web API]]
を通じて多くの [[Webサイト]]に埋め込まれて[[地図]]等の機能を提供しています。
* API を使う
** 地図の表示範囲を指定したい
[6] Map オブジェクトの [CODE[panTo]] メソッドで指定できます。
** 線の一部区間だけ色を変えたい
[3] Polyline を区間ごとに分割してそれぞれの色を指定すれば良い。
** 線に縁取りしたい
[4] 太い Polyline の上に細い Polyline を重ねるしかない?
** 線に沿って文字を描きたい
[7] 難しそう。
** Poyline に tooltip を指定したい
[8] 無理そう。
[13] mouseover で地図を含む要素に title 属性を設定して、
mouseout で元に戻せばできるかも?
** マーカーをドラッグしたとき、ドロップ先をいくつかの座標候補に限定させたい
[5] API にそういう機能は無さそう。 drag イベントでドラッグ位置の直近の座標を自分で計算して Marker 位置を設定すれば良い。
** 右クリックでメニューを表示したい
[9] 右クリックされたことは [CODE[rightclick]] イベントで取得できます。
[11] 地図上の[[クリック]]も標準状態では地図の外側の [[DOM]] [[要素]]の[[イベント]]として[[伝播]]しますが、
[[Google Maps]] の [CODE[click]] や [CODE[rightclick]] のイベントにコールバック関数を登録していると、
地図外には伝播しなくなる (場合もある) ようです。
[10] コールバック関数の引数の [CODE[MouseEvent]] オブジェクトは、
ドキュメントによると [CODE[latLng]] プロパティーしかありませんが、
実際には ([CODE[Map]] オブジェクトの場合) [CODE[pixel]] プロパティーがあって、そこから [CODE[x]] と [CODE[y]]
の座標が取得できます。 (ドキュメントにないのですが、世間ではまま使われているようです。)
[CODE[Map]] 以外のオブジェクトでの右クリックだと [CODE[pixel]]
は利用できないことがあります。
[12] より安全・確実に地図画面上の座標を取得したいときは、少し面倒ですが、 OverlayView から
getProjection で取得できるオブジェクトを使うと良いようです。
(Map の getProjection は少し違っていて、同じことはできないようです。)
[FIG[
[PRE(js code)[
var Overlay = function () { };
Overlay.prototype = new google.maps.OverlayView();
Overlay.prototype.onAdd = function () {
};
Overlay.prototype.draw = function () {
};
Overlay.prototype.onRemove = function () {
};
var overlay = new Overlay;
overlay.setMap (map);
object.addListener ('rightclick', function (ev) {
var xy = map.getProjection ().fromLatLngToContainerPixel (ev.latLng);
console.log (xy.x, xy.y);
});
]PRE]
]FIG]
** 線の近く数ピクセルのクリックでも線をクリックしたことにしたい
[14] 無理そう。 Map の [CODE[click]] で自力でがんばればできる。
** 座標により細かくマウスカーソルを制御したい
[15] 無理そう。 Map の [CODE[mousemove]] で自力でがんばればできる。
** 標準で表示される地物の表示にマウスイベントを奪われる
[16] 建物や山頂などの表示 (アイコンやラベル) があると、そちらに[[クリック]]などの[[マウスイベント]]が奪われてしまいます。
[17] [CODE[OverlayView]] を使えば、 [CODE[floatPane]] でそれよりも上面にレンダリングはできますが、なぜか[[マウスイベント]]と[[カーソル]]表示は奪われてしまいます。
(なお、 [CODE[floatPane]] の説明に情報窓よりも上と書いてありますが、嘘っぽく、それよりは下になります。)
[18] これを避けるには非表示にするしかなさそうです。
[EG[
[PRE[
new google.maps.Map (element, {
styles: [
{featureType: "poi", elementType: "all", stylers: [{visibility: "off"}]},
{featureType: "landscape", elementType: "all", stylers: [{visibility: "off"}]},
],
});
]PRE]
]EG]
** 地図内にポップアップを表示したい
[24] [[情報ウィンドウ]] ([CODE[google.maps.InfoWindow]]) でできます。
** 縮尺を表示したい
[27] [CODE[map.setOptions ({scaleControl: true})]]
で表示されます。
[32]
「○km」と表示される部分をクリックすると「○マイル」
のように切り替わります。 [[API]] から切り替えたり、現在の状態を取得したりする方法は見当たりません。
;; [33]
[[API]]
には
[CODE[google.maps.UnitSystem.METRIC]] ([[メートル法]]、[[メートル]]や[[キロメートル]]),
[CODE[google.maps.UnitSystem.IMPERIAL]] ([[ヤードポンド法]]、[[フィート]]や[[マイル]])
というのがありますが、
地図表示には使われません。
** 現在位置ボタンを表示したい
[31]
[[Google Maps]] 本体にある現在位置を取得して中央に表示するボタンは、
[[API]] で表示させることはできないようです。
* [CITE[Google Maps]]の不適切表示問題
[36] [[地図表示の政治問題]]
- [34] [CITE@ja-jp[政府、グーグルマップ「禁止令」 竹島を「独島」など領土関係で不適切表記 - MSN産経ニュース]], [TIME[2023-07-08T13:38:30.000Z]], [TIME[2013-10-02T03:39:47.002Z]] <https://web.archive.org/web/20131002033946/http://sankei.jp.msn.com/life/news/130929/trd13092908010002-n1.htm>
- [35] [CITE@ja[グーグルマップの「利用禁止令」 竹島や北方領土が「日本名でない表記」 政府が自治体などに要請 | ハフポスト NEWS]], [TIME[2023-07-08T13:38:41.000Z]] <https://www.huffingtonpost.jp/2013/09/29/google-map-forbidden_n_4011180.html>
- [40] [CITE@ja[グーグルマップ「尖閣諸島」の中国表記併記解消 - 産経ニュース]], [[SANKEI DIGITAL INC.]], [TIME[2023-10-21T07:57:56.000Z]], [TIME[2023-10-21T07:58:38.772Z]] <https://www.sankei.com/article/20231020-C5AFEOYKONNSPIOLG2FO7HNEBA/>
[41] >>40 一度解決したはずなのに再発してたらしい。
* 関連
[21] [[Google Earth]] とは別製品となっているようです。
* メモ
[2] [CITE@en[Google Maps JavaScript API V3 Reference | Google Maps JavaScript API | Google Developers]] ([TIME[2016-06-01 10:39:27 +09:00]] 版) <https://developers.google.com/maps/documentation/javascript/reference>
[FIG(quote)[
[FIGCAPTION[
[1] [CITE@ja[Google Japan Blog: Google マップの不動産検索について]]
([TIME[2016-03-02 13:52:41 +09:00]] 版)
<http://googlejapan.blogspot.jp/2011/01/google_27.html>
]FIGCAPTION]
> 2009 年 7 月に米国で、2010 年 8 月に日本でも開始した Google マップの不動産検索機能は、「多くの物件情報を一度に地図上に表示する」というコンセプトを非常に高く評価していただきました。しかしながら、実際のサービスの利用増加にはなかなか繋がらず、様々な側面から検討した結果、断腸の思いではありますが、本年 2 月 11 日をもって、サービスを停止することになりました。サービスの停止は、日本を始め、今日同サービスを提供しているすべての地域(米国、オーストラリア、ニュージーランド、英国)が対象となります。
]FIG]
[FIG(amazon)[
Google Maps
]FIG]
[22] [CITE@en[Too Many Markers! | Google Maps APIs | Google Developers]]
( ([TIME[2016-07-13 06:14:51 +09:00]]))
<https://developers.google.com/maps/articles/toomanymarkers>
[23] [CITE@en[googlemaps/js-marker-clusterer: A marker clustering library for the Google Maps JavaScript API v3.]]
( ([TIME[2016-07-22 11:59:38 +09:00]]))
<https://github.com/googlemaps/js-marker-clusterer>
[25] [CITE@en[Share your trips and real-time location from Google Maps]]
( ([TIME[2017-03-25 14:11:51 +09:00]]))
<https://blog.google/products/maps/share-your-trips-and-real-time-location-google-maps/>
[26] [CITE@en[Google Maps Platform: Introducing Google Maps Platform]]
([TIME[2018-05-03 08:30:48 +09:00]])
<https://mapsplatform.googleblog.com/2018/05/introducing-google-maps-platform.html?utm_source=em-anncmt&utm_medium=em&utm_campaign=fy18-q2-global-adhoc-email-cs-maps_none_maps_spicestandardplannobilling&utm_content=global%7Cen%7Chybr%7C%7C%7C%7C%7C%7C>
[28] [CITE@en[Developer Guide | Maps Embed API | Google Developers]]
([TIME[2018-07-03 09:41:55 +09:00]])
<https://developers.google.com/maps/documentation/embed/guide>
[29] [CITE@ja[Googleマップがゼンリンとの契約解除で、「バス停が消えた」「うちがなくなった」「存在しない道がある」など数々の改変が露見する - Togetter]]
([TIME[2019-03-22 10:51:45 +09:00]])
<https://togetter.com/li/1330522>
[30] [CITE@ja[「Googleマップが劣化した」不満の声が相次ぐ ゼンリンとの契約解除で日本地図データを自社製に変更か - ITmedia NEWS]]
([TIME[2019-03-22 10:52:03 +09:00]])
<https://www.itmedia.co.jp/news/articles/1903/22/news067.html>
[37] [CITE@ja[ビッグモーター全店舗、グーグルマップより消ゆ | スラド IT]], [TIME[2023-08-02T09:55:09.000Z]] <https://it.srad.jp/story/23/08/01/1242207/>
>[SNIP[]]これにより、枯れた街路樹の確認が困難になっており、SNS上でもこの問題について困惑の声が広がっているようだ。
[38] >>37
事の真相はともかく、 [[Google Maps]] に[[地物]]情報が出てこないごときのことで
「確認が困難」になるのは見る人の問題だろう...
[39]
その程度の事実確認もできない素人は何もしないで黙っていたほうがすべての人にとっていいのでは...