これは、Google Maps API v3を表示できる、jQueryプラグインです。
jQuery 1.6・IE9 / IE8 / IE7(Windows 7)・Safari / Firefox 5 / Firefox 4 / Chrome(Mac)で動作確認しています。
IE6で不具合があっても、対応する予定はありません。あらかじめご了承ください。
更新履歴
- 2012.05.17
- Google Maps API v3(v3.7以降)で、カスタムアイコンによる複数マーカーが表示されない不具合を修正しました。
これに伴い、ShadowIconの初期値を変更しました。 - 2012.02.20
- 【既知の問題点】Google Maps API v3(v3.7以降)で、カスタムアイコンによる複数マーカーが表示されません。
暫定的な対応となりますが、Google Maps APIを読み込む際「/js?v=3.6&sensor=false」のようにバージョンを指定してください。 - 2011.11.08
- サンプル4のソースコードで、data_typeの指定が抜けてるのを修正しました。
- 2011.07.04
- jQuery Google Maps プラグイン ver 1.02を公開。
外部ファイルの読込で、JSONに対応しました。
また、XMLまたはJSON形式でマーカー情報を出力できるplacemarks.phpを同梱しました。 - 2011.03.03
- jQuery Google Maps プラグイン ver 1.01を公開。
Google Maps API v3(v3.4)で、カスタムアイコンによる複数マーカーが表示されない不具合を修正しました。
カスタムアイコンを指定する際、アイコン・シャドウのそれぞれに、anchorおよびscaleSizeを指定できるようにしました。 - 2011.02.25
- jQuery Google Maps プラグイン ver 1.00を公開。
サンプル1(シングルマーカーのみ)
$('#gmap').GoogleMaps({
lat: 37.400529,
lng: 140.359743,
zoom: 15
});
サンプル2(シングルマーカー・情報ウィンドウあり)
$('#gmap2').GoogleMaps({
lat: 37.400529,
lng: 140.359743,
zoom: 15,
info_window: 1,
info_content: '<h1 style="color: #C60; font-size: 16px; padding-bottom: 0.5em; border-bottom: solid 1px #CCC; margin-bottom: 0.5em;">郡山市役所</h1><a href="http://koriyama.fukushima.jp">koriyama.fukushima.jp</a>',
icon_type: 'ltblueDot'
});
サンプル3(マルチマーカー)
$('#gmap3').GoogleMaps({
file: './placemarks.php?format=xml',
info_window_heading_level: 3
});
サンプル4(マルチマーカー・リスト連動・外部ドメインからJSONPでマーカー情報を取得)
$('#gmap4').GoogleMaps({
file: 'http://demo.5020.jp/plugins/jQuery/jQueryGoogleMaps/placemarks.php?format=json',
data_type: 'json',
list_target: 'ul#list'
});
初期化オプションについて(グレーの枠内は初期値です)
- 初期位置、ズームレベル、情報ウィンドウ、アイコンタイプ(シングルマーカー)
-
- lat:
- 表示される地図の中心位置の緯度を指定します。
-
lat: 37.400529
- lng:
- 表示される地図の中心位置の経度を指定します。
-
lng: 140.359743
- zoom:
- 表示される地図のズームレベルを指定します。
-
zoom: 15
- info_window:
- 情報ウィンドウの表示を( 0 | 1 )で指定します。デフォルトでは、非表示になっています。
-
info_window: 0
- info_content:
- 情報ウィンドウに表示する内容を指定します。HTMLタグも記述できます。
-
info_content: null
- icon_type:
- 表示されるマーカーを( redDot | blueDot | greenDot | ltblueDot | yellowDot | purpleDot | pinkDot | orangeDot )で指定します。
デフォルトでは、redDotになります。
iconsで任意のアイコンを指定することも可能です。 -
icon_type: null
- コントローラー、マップタイプ(共通)
-
- map_type_control:
- MapTypeコントロールの表示をブーリアン( true | false )で指定します。
-
map_type_control: false
- map_type_id:
- MapTypeIDを( HYBRID | ROADMAP | SATELLITE | TERRAIN )で指定します。
-
map_type_id: google.maps.MapTypeId.ROADMAP
- 外部ファイル(マルチマーカー)
-
- file:
- マーカー表示用の外部ファイルのパスを指定します。
外部ドメインのJSONを指定する場合は、callbackの指定は不要です。 -
file: null
- data_type:
- マーカー表示用の外部ファイルのタイプを( xml | json )のいずれかで指定します。
-
data_type: null
- 情報ウィンドウ(共通)
-
- info_window_class:
- 情報ウィンドウの内容を含む、div要素のclass名を指定します。
-
info_window_class: 'info-data'
- info_window_heading_level:
- 情報ウィンドウのタイトル部分の見出しレベルを1〜6の整数で指定します。
-
info_window_heading_level: 1
- 連動リスト(マルチマーカー)
-
- link_target:
- 地図上のマーカーと連動させる、ページ内に存在する要素を指定します。
-
link_target: null
- list_target:
- 地図上のマーカーと連動するリストを表示させるul(もしくは、ol)要素を指定します。
-
list_target: null
- マーカーアイコン(共通)
-
- icons :
- カスタムアイコン向けのMarkerImage クラスを初期化するための指定です。
markerXXXはアイコン、shadowXXXは影をそれぞれ指定できます。 - 参考URL:http://code.google.com/intl/ja/apis/maps/documentation/javascript/reference.html#MarkerImage
-
icons :{ redDot: { markerImg: 'http://maps.google.co.jp/mapfiles/ms/icons/red-dot.png', markerSize: new google.maps.Size( 32, 32 ), markerOrigin: new google.maps.Point( 0, 0 ), markerAnchor: new google.maps.Point( 16, 32 ), markerScaleSize: new google.maps.Size( 32, 32 ), shadowImg: 'http://maps.google.co.jp/mapfiles/ms/icons/msmarker.shadow.png', shadowSize: new google.maps.Size( 59, 32 ), shadowOrigin: new google.maps.Point( 0, 0 ), shadowAnchor: new google.maps.Point( 16, 32 ), shadowScaleSize: new google.maps.Size( 59, 32 ) }, blueDot: { markerImg: 'http://maps.google.co.jp/mapfiles/ms/icons/blue-dot.png', markerSize: new google.maps.Size( 32, 32 ), markerOrigin: new google.maps.Point( 0, 0 ), markerAnchor: new google.maps.Point( 16, 32 ), markerScaleSize: new google.maps.Size( 32, 32 ), shadowImg: 'http://maps.google.co.jp/mapfiles/ms/icons/msmarker.shadow.png', shadowSize: new google.maps.Size( 59, 32 ), shadowOrigin: new google.maps.Point( 0, 0 ), shadowAnchor: new google.maps.Point( 16, 32 ), shadowScaleSize: new google.maps.Size( 59, 32 ) }, greenDot: { markerImg: 'http://maps.google.co.jp/mapfiles/ms/icons/green-dot.png', markerSize: new google.maps.Size( 32, 32 ), markerOrigin: new google.maps.Point( 0, 0 ), markerAnchor: new google.maps.Point( 16, 32 ), markerScaleSize: new google.maps.Size( 32, 32 ), shadowImg: 'http://maps.google.co.jp/mapfiles/ms/icons/msmarker.shadow.png', shadowSize: new google.maps.Size( 59, 32 ), shadowOrigin: new google.maps.Point( 0, 0 ), shadowAnchor: new google.maps.Point( 16, 32 ), shadowScaleSize: new google.maps.Size( 59, 32 ) }, ltblueDot: { markerImg: 'http://maps.google.co.jp/mapfiles/ms/icons/ltblue-dot.png', markerSize: new google.maps.Size( 32, 32 ), markerOrigin: new google.maps.Point( 0, 0 ), markerAnchor: new google.maps.Point( 16, 32 ), markerScaleSize: new google.maps.Size( 32, 32 ), shadowImg: 'http://maps.google.co.jp/mapfiles/ms/icons/msmarker.shadow.png', shadowSize: new google.maps.Size( 59, 32 ), shadowOrigin: new google.maps.Point( 0, 0 ), shadowAnchor: new google.maps.Point( 16, 32 ), shadowScaleSize: new google.maps.Size( 59, 32 ) }, yellowDot: { markerImg: 'http://maps.google.co.jp/mapfiles/ms/icons/yellow-dot.png', markerSize: new google.maps.Size( 32, 32 ), markerOrigin: new google.maps.Point( 0, 0 ), markerAnchor: new google.maps.Point( 16, 32 ), markerScaleSize: new google.maps.Size( 32, 32 ), shadowImg: 'http://maps.google.co.jp/mapfiles/ms/icons/msmarker.shadow.png', shadowSize: new google.maps.Size( 59, 32 ), shadowOrigin: new google.maps.Point( 0, 0 ), shadowAnchor: new google.maps.Point( 16, 32 ), shadowScaleSize: new google.maps.Size( 59, 32 ) }, purpleDot: { markerImg: 'http://maps.google.co.jp/mapfiles/ms/icons/purple-dot.png', markerSize: new google.maps.Size( 32, 32 ), markerOrigin: new google.maps.Point( 0, 0 ), markerAnchor: new google.maps.Point( 16, 32 ), markerScaleSize: new google.maps.Size( 32, 32 ), shadowImg: 'http://maps.google.co.jp/mapfiles/ms/icons/msmarker.shadow.png', shadowSize: new google.maps.Size( 59, 32 ), shadowOrigin: new google.maps.Point( 0, 0 ), shadowAnchor: new google.maps.Point( 16, 32 ), shadowScaleSize: new google.maps.Size( 59, 32 ) }, pinkDot: { markerImg: 'http://maps.google.co.jp/mapfiles/ms/icons/pink-dot.png', markerSize: new google.maps.Size( 32, 32 ), markerOrigin: new google.maps.Point( 0, 0 ), markerAnchor: new google.maps.Point( 16, 32 ), markerScaleSize: new google.maps.Size( 32, 32 ), shadowImg: 'http://maps.google.co.jp/mapfiles/ms/icons/msmarker.shadow.png', shadowSize: new google.maps.Size( 59, 32 ), shadowOrigin: new google.maps.Point( 0, 0 ), shadowAnchor: new google.maps.Point( 16, 32 ), shadowScaleSize: new google.maps.Size( 59, 32 ) }, orangeDot: { markerImg: 'http://maps.google.co.jp/mapfiles/ms/icons/orange-dot.png', markerSize: new google.maps.Size( 32, 32 ), markerOrigin: new google.maps.Point( 0, 0 ), markerAnchor: new google.maps.Point( 16, 32 ), markerScaleSize: new google.maps.Size( 32, 32 ), shadowImg: 'http://maps.google.co.jp/mapfiles/ms/icons/msmarker.shadow.png', shadowSize: new google.maps.Size( 59, 32 ), shadowOrigin: new google.maps.Point( 0, 0 ), shadowAnchor: new google.maps.Point( 16, 32 ), shadowScaleSize: new google.maps.Size( 59, 32 ) } } - list_target:
- 地図上のマーカーと連動するリストを表示させるul(もしくは、ol)要素を指定します。
-
list_target: null
JavaScript サンプル
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">google.load("jquery", "1.6.2");</script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript" src="js/jquery.GoogleMaps.js"></script>
<script type="text/javascript">
$(function(){
$('#gmap').GoogleMaps({
// シングルマーカー関連
lat: 37.400529, // 緯度
lng: 140.359743, // 経度
zoom: 15, // ズームレベル
info_window: 0, // 情報ウィンドウの表示(0, 1)
info_content: null, // 情報ウィンドウのコンテンツ(HTMLタグ)
// マルチマーカー関連
file: null, // XMLファイルのパス(記述例:'./sample.xml')
info_window_class: 'info-data', // 情報ウィンドウのclass名
info_window_heading_level: 1, // 情報ウィンドウ内タイトルの見出しレベル(1〜6)
list_target: null, // 連動リストを表示させるul要素のセレクタ(記述例:'ul#list')
// マップタイプ関連
map_type_control: false, // MapTypeコントロール(Boolean)
map_type_id: google.maps.MapTypeId.ROADMAP, // MapTypeID
// アイコン関連
icon_type: null, // アイコンタイプ(アイコン一覧は、icons: {}で指定)
icons :{ // アイコンタイプの一覧(以下、デフォルト値)
redDot: {
markerImg: 'http://maps.google.co.jp/mapfiles/ms/icons/red-dot.png',
markerSize: new google.maps.Size( 32, 32 ),
markerOrigin: new google.maps.Point( 0, 0 ),
markerAnchor: new google.maps.Point( 16, 32 ),
markerScaleSize: new google.maps.Size( 32, 32 ),
shadowImg: 'http://maps.google.co.jp/mapfiles/ms/icons/msmarker.shadow.png',
shadowSize: new google.maps.Size( 59, 32 ),
shadowOrigin: new google.maps.Point( 0, 0 ),
shadowAnchor: new google.maps.Point( 16, 32 ),
shadowScaleSize: new google.maps.Size( 59, 32 )
},
blueDot: {(中略)},
greenDot: {(中略)},
ltblueDot: {(中略)},
yellowDot: {(中略)},
purpleDot: {(中略)},
pinkDot: {(中略)},
orangeDot: {(中略)}
}
});
});
</script>
XML サンプル
<?xml version="1.0" encoding="UTF-8"?>
<Placemarks>
<Placemark>
<name>郡山市役所</name> // 名称(情報ウィンドウ、リストに表示)
<description> // 情報ウィンドウ内のコンテンツ
<![CDATA[
〒963-8024<br>
福島県郡山市朝日1丁目23−7<br>
024-924-2491<br>
]]>
</description>
<LookAt>
<latitude>37.400529</latitude> // 緯度
<longitude>140.359743</longitude> // 経度
</LookAt>
<icon>redDot</icon> // アイコンタイプ
</Placemark>
<Placemark>
(中略)
</Placemark>
</Placemarks>
JSON サンプル
{
"placemarks": [
{
"name": "郡山市役所",
"description": "<img src=\"http://mw2.google.com/mw-panoramio/photos/thumbnail/25589455.jpg\">〒963-8024<br>福島県郡山市朝日1丁目23−7<br>024-924-2491<br><a href=\"http://koriyama.fukushima.jp\">koriyama.fukushima.jp</a>",
"url": "http://koriyama.fukushima.jp",
"lookat": {
"latitude": "37.400529",
"longitude": "140.359743"
}
},
{(中略)}
]
}
備考
お気づきの点やご意見・ご要望などありましたら、@BUNまたはdreamseekerまで、ご連絡ください。