[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 一度解決したはずなのに再発してたらしい。

* 料金改定

** 令和7年

[44] 
[TIME[2025-03-01]]からまた改定。

[45] 
例によってわかりにくい書き方がされているが、よく使っているところにとっては実質値上げらしい。


[42] [CITE@en[Blog: Build more for free and access more discounts online with Google Maps Platform updates – Google Maps Platform]], [TIME[2025-02-10T17:48:00.000Z]], [TIME[2025-02-13T04:06:47.819Z]] <https://mapsplatform.google.com/resources/blog/build-more-for-free-and-access-more-discounts-online-with-google-maps-platform-updates/>

[43] [CITE@en[Platform Pricing & API Costs - Google Maps Platform]], [TIME[2025-02-10T17:48:00.000Z]], [TIME[2025-02-13T04:07:51.556Z]] <https://mapsplatform.google.com/pricing-calculator/?_gl=1*12klq45*_up*MQ..*_ga*MjA2OTcxNDg4LjE3Mzk0MTk1ODg.*_ga_NRWSTWS78N*MTczOTQxOTU4OC4xLjAuMTczOTQxOTU4OC4wLjAuMA..>


* 技術

[47] 
[[Googleによる地名翻訳]]


* 関連

[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] 
その程度の事実確認もできない素人は何もしないで黙っていたほうがすべての人にとっていいのでは...




[46] 
[CITE@ja[Xユーザーの西村まさゆきさん: 「Googleマップって便利すぎる上に無料だから、なんか国土地理院の地図みたいな感じで使ってるけど、ぜんぜんそんなことなくて、大阪駅より金を払ってるSMショーパブの方をデカく表示するとか、普通にするのみて「そういえば営利企業のサービスだった」って気づく」 / X]], [TIME[午後3:03 · 2025年3月26日][2025-03-26T06:03:05.000Z]], [TIME[2025-03-28T03:51:26.000Z]] <https://x.com/tokyo26/status/1904776098363433168>
