読者です 読者をやめる 読者になる 読者になる

setZoom() でエラーが発生するときの対処法 [Google Maps API]

Google Maps JavaScript API v3 を使ったところ次のような例外が発生した。

Uncaught InvalidValueError: invalid argument to setZoom: 15

コードは次の通り。div 要素に設定された属性 data-lat, data-lng から中心の座標、 data-zoom から縮尺を取得して地図を表示するものだ。jQuery を使っている。

<div class="map-embed" data-lat="36.561049" data-lng="136.663159" data-zoom="15"></div>
var gm = google.maps;

$(".map-embed").each(function() {
	var $container = $(this)
	, lat = $container.attr("data-lat")
	, lng = $container.attr("data-lng")
	, zoom = $container.attr("data-zoom")
	, pos = new gm.LatLng(lat, lng)
	, map = new gm.Map(this, {
		mapTypeId: gm.MapTypeId.ROADMAP
		, center: pos
		, zoom: zoom
	})
	;
});

何のことはない、zoom の値は数値でないといけないのである。次のように parseInt() を使用して文字列を数値に変換することでこの問題は解決する。

...
	, zoom = parseInt($container.attr("data-zoom"))
...