GPolyline
を使用する場合は、ページに VML 名前空間を組み込む必要があります。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <style type="text/css"> v\:* { behavior:url(#default#VML); } </style> <script src="http://maps.google.com/maps?file=api&v=1&key=ここにKeyを入力" type="text/javascript"></script> </head>
API 解説 |
GMap
GMap
を呼び出すことにより、1つのマップが表示されます。
複数のマップを表示するには、GMap
を複数呼び出せば良い。
GMap(container[, mapTypes[, width, height]])
var map = new GMap(document.getElementById("map"), [G_MAP_TYPE], "500", "400");
enableDragging()
disableDragging()
draggingEnabled()
enableInfoWindow()
disableInfoWindow()
infoWindowEnabled()
addControl(control)
map.addControl(new GLargeMapControl()); map.addControl(new GMapTypeControl());
removeControl(control)
var ctrl = new GLargeMapControl(); map.addControl(ctrl); map.removeControl(ctrl);
getCenterLatLng()
var point = map.getCenterLatLng(); window.alert(point.x); window.alert(point.y);
getBoundsLatLng()
var point = map.getBoundsLatLng(); window.alert(point.minX); window.alert(point.minY);
getSpanLatLng()
var point = map.getSpanLatLng(); window.alert(point.width); window.alert(point.height);
getZoomLevel()
centerAtLatLng(latLng)
map.centerAtLatLng(new GPoint(132.46151447296142, 34.39951809672059));
recenterOrPanToLatLng(latLng)
map.recenterOrPanToLatLng(new GPoint(132.47151447296142, 34.40951809672059));
zoomTo(zoomLevel)
centerAndZoom(latLng, zoomLevel)
getMapTypes()
var mtype = map.getMapTypes();
getCurrentMapType()
setMapType(mapType)
map.setMapType(G_HYBRID_TYPE);
addOverlay(overlay)
removeOverlay(overlay)
var marker = new GMarker(new GPoint(132.46151447296142, 34.39951809672059)); map.addOverlay(marker); map.removeOverlay(marker);
clearOverlays()
openInfoWindow(latLng, htmlElem[, pixelOffset[, onOpenFn[, onCloseFn]]])
map.openInfoWindow( new GPoint(132.46151447296142, 34.39951809672059), document.createTextNode("広島城"), new GSize(50, 50), function() {window.alert("InfoWindowオープン");}, function() {window.alert("InfoWindowクローズ");});
openInfoWindowHtml(latLng, htmlStr[, pixelOffset[, onOpenFn[, onCloseFn]]])
map.openInfoWindowHtml( new GPoint(132.46151447296142, 34.39951809672059), "<b style='color: red;'>広島城</b>", new GSize(-50, -50), function() {window.alert("InfoWindowHtmlオープン");}, function() {window.alert("InfoWindowHtmlクローズ");});
openInfoWindowXslt(latLng, xmlElem, xsltUri[, pixelOffset[, onOpenFn[, onCloseFn]]])
var request = GXmlHttp.create(); request.open("GET", "sample001.xml"); request.onreadystatechange = function() { if (request.readyState == 4) { var xmlDoc = request.responseXML; map.openInfoWindowXslt( new GPoint(132.46151447296142, 34.39951809672059), xmlDoc, "sample001.xsl", new GSize(100, -50), function() {window.alert("InfoWindowXsltオープン");}, function() {window.alert("InfoWindowXsltクローズ");}); } } request.send(null);
showMapBlowup(latLng[, zoomLevel[, mapType[, pixelOffset[, onOpenFn[, onCloseFn]]]]]))
map.showMapBlowup( new GPoint(132.46151447296142, 34.39951809672059), 9, G_SATELLITE_TYPE, new GSize(100, -50), function() {window.alert("showMapBlowupオープン");}, function() {window.alert("showMapBlowupクローズ");});
closeInfoWindow()
click
GEvent.addListener(map, 'click', function(overlay, point) { if (overlay) { window.alert('マーカー削除'); map.removeOverlay(overlay); } else if (point) { window.alert('クリックした座標 : ' + point.x + ' , ' + point.y); } });
move
GEvent.addListener(map, "move", function() { var center = map.getCenterLatLng(); var latLngStr = '(' + center.x + ', ' + center.y + ')'; document.getElementById("message").innerHTML = latLngStr; });
movestart
GEvent.addListener(map, "movestart", function() { var center = map.getCenterLatLng(); var latLngStr = '(' + center.x + ', ' + center.y + ')'; document.getElementById("message").innerHTML = latLngStr; });
moveend
GEvent.addListener(map, "moveend", function() { var center = map.getCenterLatLng(); var latLngStr = '(' + center.x + ', ' + center.y + ')'; document.getElementById("message").innerHTML = latLngStr; });
zoom
GEvent.addListener(map, 'zoom', function(oldZoomLevel, newZoomLevel) { window.alert('前のズームレベル : ' + oldZoomLevel); window.alert('今のズームレベル : ' + newZoomLevel); });
maptypechanged
GEvent.addListener(map, "maptypechanged", function() { map.addControl(new GMapTypeControl()); window.alert("マップタイプが変わりました"); });
infowindowopen
GEvent.addListener(map, "infowindowopen", function() { window.alert("サブウィンドゥが開きました"); });
infowindowclose
GEvent.addListener(map, "infowindowclose", function() { window.alert("サブウィンドゥが閉じました"); });
addoverlay
GEvent.addListener(map, "addoverlay", function(overlay) { overlay.openInfoWindowHtml("オーバーレイが追加されました"); });
removeoverlay
GEvent.addListener(map, "removeoverlay", function(overlay) { window.setTimeout(function() {map.addOverlay(overlay);}, 5000); });
clearoverlays
GEvent.addListener(map, "clearoverlays", function() { window.alert("消えました"); });
GMarker
GMarker
は、オーバーレイの一つで、一つの座標に一つのアイコンが表示されます。
また、アイコンを変更することやサブウィンドゥを表示することも出来ます。
GMarker(point[, icon])
var icon = new GIcon(); icon.image = "http://ponpon-village.net/ajax/img/hiyo05.gif"; icon.iconSize = new GSize(25, 30); icon.iconAnchor = new GPoint(13.5, 40); var marker = new GMarker(new GPoint(132.46151447296142, 34.39951809672059), icon); map.addOverlay(marker);
openInfoWindow(htmlElem)
var marker = new GMarker(new GPoint(132.46151447296142, 34.39951809672059)); map.addOverlay(marker); marker.openInfoWindow(document.createTextNode("広島城"));
openInfoWindowHtml(htmlStr)
var marker = new GMarker(new GPoint(132.46151447296142, 34.39951809672059)); map.addOverlay(marker); marker.openInfoWindowHtml("広島城");
openInfoWindowXslt(xmlElem, xsltUri)
var marker = new GMarker(new GPoint(132.46151447296142, 34.39951809672059)); map.addOverlay(marker); var request = GXmlHttp.create(); request.open("GET", "sample001.xml"); request.onreadystatechange = function() { if (request.readyState == 4) { var xmlDoc = request.responseXML; marker.openInfoWindowXslt(xmlDoc, "sample001.xsl"); } } request.send(null);
showMapBlowup([zoomLevel, [mapType]])
var marker = new GMarker(new GPoint(132.46151447296142, 34.39951809672059)); map.addOverlay(marker); marker.showMapBlowup(1, G_MAP_TYPE);
click
GEvent.addListener(marker, 'click', function() { marker.openInfoWindowHtml("マーカーがクリックされました"); });
infowindowopen
infowindowopen
イベントより先に動作する。
GEvent.addListener(marker, "infowindowopen", function() { window.alert("サブウィンドゥが開きました"); });
infowindowclose
GEvent.addListener(marker, "infowindowclose", function() { window.alert("サブウィンドゥが閉じました"); });
GPolyline
GPolyline
は、オーバーレイの一つで、
複数の座標の配列を与えることにより、ラインを引くことが出来ます。
GPolyline(points[, color[, weight[, opacity]]])
var points = []; points[0] = new GPoint(132.46151447296142, 34.39951809672059); points[1] = new GPoint(132.46251447296142, 34.40051809672059); points[2] = new GPoint(132.46051447296142, 34.40151809672059); var line = new GPolyline(points, "#ff0000", 5, 0.5); map.addOverlay(line);
GIcon
マップに表示するアイコンの画像を指定する時に使用します。
image(またはtransparent)、iconSize、iconAnchor の設定が必須です。
shadow を設定する時は、shadowSize の設定が必須です。
サブウィンドゥを使用する時は、infoWindowAnchor も設定する必要があります。
GIcon([copy])
var icon = new GIcon(); icon.image = "http://ponpon-village.net/ajax/img/hiyo05.gif"; icon.iconSize = new GSize(25, 30); icon.iconAnchor = new GPoint(13.5, 40); var marker = new GMarker(new GPoint(132.46151447296142, 34.39951809672059), icon); map.addOverlay(marker); var icon2 = new GIcon(icon); var marker = new GMarker(new GPoint(132.46251447296142, 34.39851809672059), icon2); map.addOverlay(marker);
image
var icon = new GIcon(); icon.image = "http://ponpon-village.net/ajax/img/hiyo05.gif"; icon.iconSize = new GSize(25, 30); icon.iconAnchor = new GPoint(13.5, 40); var marker = new GMarker(new GPoint(132.46151447296142, 34.39951809672059), icon); map.addOverlay(marker);
shadow
var icon = new GIcon(); icon.image = "http://ponpon-village.net/ajax/img/hiyo05.gif"; icon.shadow = "http://ponpon-village.net/ajax/img/hiyo05_shadow.gif"; icon.iconSize = new GSize(25, 30); icon.shadowSize = new GSize(39, 18); icon.iconAnchor = new GPoint(13.5, 40); var marker = new GMarker(new GPoint(132.46151447296142, 34.39951809672059), icon); map.addOverlay(marker);
iconSize
var icon = new GIcon(); icon.image = "http://ponpon-village.net/ajax/img/hiyo05.gif"; icon.iconSize = new GSize(30, 40); icon.iconAnchor = new GPoint(13.5, 40); var marker = new GMarker(new GPoint(132.46151447296142, 34.39951809672059), icon); map.addOverlay(marker);
shadowSize
var icon = new GIcon(); icon.image = "http://ponpon-village.net/ajax/img/hiyo05.gif"; icon.shadow = "http://ponpon-village.net/ajax/img/hiyo05_shadow.gif"; icon.iconSize = new GSize(25, 30); icon.shadowSize = new GSize(50, 25); icon.iconAnchor = new GPoint(13.5, 40); var marker = new GMarker(new GPoint(132.46151447296142, 34.39951809672059), icon); map.addOverlay(marker);
iconAnchor
var icon = new GIcon(); icon.image = "http://ponpon-village.net/ajax/img/hiyo05.gif"; icon.iconSize = new GSize(25, 30); icon.iconAnchor = new GPoint(0, 0); var marker = new GMarker(new GPoint(132.46151447296142, 34.39951809672059), icon); map.addOverlay(marker);
infoWindowAnchor
var icon = new GIcon(); icon.image = "http://ponpon-village.net/ajax/img/hiyo05.gif"; icon.iconSize = new GSize(25, 30); icon.iconAnchor = new GPoint(13.5, 40); icon.infoWindowAnchor = new GPoint(21, 18); var marker = new GMarker(new GPoint(132.46151447296142, 34.39951809672059), icon); map.addOverlay(marker); marker.openInfoWindowHtml("広島城");
printImage
var icon = new GIcon(); icon.image = "http://ponpon-village.net/ajax/img/hiyo05.gif"; icon.iconSize = new GSize(25, 30); icon.iconAnchor = new GPoint(13.5, 40); icon.printImage = "http://ponpon-village.net/ajax/img/hiyo04.gif"; var marker = new GMarker(new GPoint(132.46151447296142, 34.39951809672059), icon); map.addOverlay(marker);
mozPrintImage
var icon = new GIcon(); icon.image = "http://ponpon-village.net/ajax/img/hiyo05.gif"; icon.iconSize = new GSize(25, 30); icon.iconAnchor = new GPoint(13.5, 40); icon.mozPrintImage = "http://ponpon-village.net/ajax/img/hiyo04.gif"; var marker = new GMarker(new GPoint(132.46151447296142, 34.39951809672059), icon); map.addOverlay(marker);
printShadow
var icon = new GIcon(); icon.image = "http://ponpon-village.net/ajax/img/hiyo05.gif"; icon.shadow = "http://ponpon-village.net/ajax/img/hiyo05_shadow.gif"; icon.iconSize = new GSize(25, 30); icon.shadowSize = new GSize(50, 25); icon.printShadow = "http://ponpon-village.net/ajax/img/hiyo05_shadow.gif"; icon.iconAnchor = new GPoint(13.5, 40); var marker = new GMarker(new GPoint(132.46151447296142, 34.39951809672059), icon); map.addOverlay(marker);
transparent
var icon = new GIcon(); icon.image = "http://ponpon-village.net/ajax/img/blue-ani02_new.png"; icon.iconSize = new GSize(40, 41); icon.transparent = "http://ponpon-village.net/ajax/img/ururu01_new.png"; icon.iconAnchor = new GPoint(13.5, 50); var marker = new GMarker(new GPoint(132.46151447296142, 34.39951809672059), icon); map.addOverlay(marker);
imageMap
var icon = new GIcon(); icon.image = "http://ponpon-village.net/ajax/img/blue-ani02_new.png"; icon.iconSize = new GSize(40, 41); icon.transparent = "http://ponpon-village.net/ajax/img/ururu01_new.png"; icon.iconAnchor = new GPoint(13.5, 50); icon.imageMap = [0,0,0,20,20,20,20,0]; var marker = new GMarker(new GPoint(132.46151447296142, 34.39951809672059), icon); map.addOverlay(marker);
GEvent
全てのイベントの登録と実行を操作します。
GEvent は全て静的メソッドで構成されているので、
例えば GMap の時の var map = new GMap(...)のような、new は不要で、
そのまま GEvent.addListener(...) または、var event = GEvent.addListener(...) と記述します。
addListener(source, eventName, listenerFn)
GEvent.addListener(map, "moveend", function() { alert("マップが移動しました"); });
removeListener(listener)
var mapmoveend = GEvent.addListener(map, "moveend", function() { alert("マップの移動イベントを削除します"); GEvent.removeListener(mapmoveend); });
clearListeners(source, eventName)
GEvent.addListener(map, "moveend", function() { alert("マップの移動イベントを削除します"); GEvent.clearListeners(map, "moveend"); });
trigger(source, eventName[, args...])
GEvent.addListener(map, 'click', function(overlay, point) { if (overlay) { window.alert('マーカー削除'); map.removeOverlay(overlay); } else if (point) { window.alert('クリックした座標 : ' + point.x + ' , ' + point.y); } }); GEvent.trigger(map, 'click', '', new GPoint(132.46151447296142, 34.39951809672059));
bind(source, eventName, object, method)
function MyApplication() { this.counter = 0; GEvent.bind(map, "click", this, this.onMapClick); } MyApplication.prototype.onMapClick = function() { this.counter++; window.alert("マップ " + this.counter + " 回クリック"); }; var application = new MyApplication();
GXmlHttp
GXmlHttp は、複数のブラウザで XmlHttpRequest が使える機能を提供します。
GXmlHttp は静的メソッドでなので、
例えば GMap の時の var map = new GMap(...)のような、new は不要で、
そのまま var request = GXmlHttp.create() と記述します。
create()
var request = GXmlHttp.create(); request.open("GET", "sample002.xml", true); request.onreadystatechange = function() { if (request.readyState == 4) { var xmlDoc = request.responseXML; var markers = xmlDoc.documentElement.getElementsByTagName("marker"); for (var i = 0; i < markers.length; i++) { var point = new GPoint(parseFloat(markers[i].getAttribute("lng")), parseFloat(markers[i].getAttribute("lat"))); var marker = new GMarker(point); map.addOverlay(marker); } } } request.send(null);
GXml
GXml は、XML を解析する機能を提供します。
GXml は静的メソッドでなので、
例えば GMap の時の var map = new GMap(...)のような、new は不要で、
そのまま var xmlDoc = GXml.parse(...)と記述します。
parse(xmlStr)
var request = GXmlHttp.create(); request.open("GET", "sample001.xml", true); request.onreadystatechange = function() { if (request.readyState == 4) { var txtDoc = request.responseText; var xmlDoc = GXml.parse(txtDoc); window.alert(xmlDoc.documentElement.getElementsByTagName("名")[2].text); } } request.send(null);
value(xmlNode)
var request = GXmlHttp.create(); request.open("GET", "sample001.xml", true); request.onreadystatechange = function() { if (request.readyState == 4) { var txtDoc = request.responseText; var xmlDoc = GXml.parse(txtDoc); window.alert(GXml.value(xmlDoc.documentElement.getElementsByTagName("名")[2])); } } request.send(null);
GXslt
GXslt で、XML データに XSLT を適用することが出来ます。
GXslt の静的メソッドは、
例えば GMap の時の var map = new GMap(...)のような、new は不要で、
そのまま var xsltDoc = GXslt.create(...)と記述します。
create(xsltXmlDoc)
var xmlDoc; var request = GXmlHttp.create(); request.open("GET", "sample001.xml", true); request.onreadystatechange = function() { if (request.readyState == 4) { xmlDoc = request.responseXML; } } request.send(null); var request2 = GXmlHttp.create(); request2.open("GET", "sample001.xsl", true); request2.onreadystatechange = function() { if (request2.readyState == 4) { var xslDoc = request2.responseXML; var xsl = GXslt.create(xslDoc); xsl.transformToHtml(xmlDoc, document.getElementById("disp")) } }
transformToHtml(xmlDoc, htmlContainer)
var request = GXmlHttp.create(); request.open("GET", "sample001.xml", true); request.onreadystatechange = function() { if (request.readyState == 4) { var xmlDoc = request.responseXML; var request2 = GXmlHttp.create(); request2.open("GET", "sample001.xsl", true); request2.onreadystatechange = function() { if (request2.readyState == 4) { var xslDoc = request2.responseXML; var xsl = GXslt.create(xslDoc); xsl.transformToHtml(xmlDoc, document.getElementById("disp")); } } request2.send(null); } } request.send(null);
GPoint
GPoint は、マップの座標を表します。座標は、緯度経度です。
GPoint(x, y)
var map = new GMap(document.getElementById("map")); var point = new GPoint(132.46151447296142, 34.39951809672059); map.centerAndZoom(point, 1);
x
var map = new GMap(document.getElementById("map")); var point = new GPoint(132.46151447296142, 34.39951809672059); map.centerAndZoom(point, 1); window.alert(point.x);
y
var map = new GMap(document.getElementById("map")); var point = new GPoint(132.46151447296142, 34.39951809672059); map.centerAndZoom(point, 1); window.alert(point.y);
GSize
GSize は、サイズや位置を表します。
GSize(width, height)
var size = new GSize(25, 30); var icon = new GIcon(); icon.image = "http://ponpon-village.net/ajax/img/hiyo05.gif"; icon.iconSize = size; icon.iconAnchor = new GPoint(13.5, 40); var marker = new GMarker(new GPoint(132.46151447296142, 34.39951809672059), icon); map.addOverlay(marker);
width
var size = new GSize(25, 30); var icon = new GIcon(); icon.image = "http://ponpon-village.net/ajax/img/hiyo05.gif"; icon.iconSize = size; icon.iconAnchor = new GPoint(13.5, 40); var marker = new GMarker(new GPoint(132.46151447296142, 34.39951809672059), icon); map.addOverlay(marker); window.alert(size.width);
height
var size = new GSize(25, 30); var icon = new GIcon(); icon.image = "http://ponpon-village.net/ajax/img/hiyo05.gif"; icon.iconSize = size; icon.iconAnchor = new GPoint(13.5, 40); var marker = new GMarker(new GPoint(132.46151447296142, 34.39951809672059), icon); map.addOverlay(marker); window.alert(size.height);
GBounds
GBounds は、2つの座標を指定して、四角形の範囲を作ります。
座標なので、値は緯度経度を与えなければなりません。
GBounds(minX, minY, maxX, maxY)
var bounds = new GBounds(132.46051447296142, 34.39851809672059, 132.46251447296142, 34.40051809672059); GEvent.addListener(map, 'click', function(overlay, point) { if (point.x >= bounds.minX && point.y >= bounds.minY && point.x <= bounds.maxX && point.y <= bounds.maxY) { window.alert("GBound の範囲内をクリックしました!"); } });
minX
var bounds = new GBounds(132.46251447296142, 34.40051809672059, 132.46051447296142, 34.39851809672059); GEvent.addListener(map, 'click', function(overlay, point) { window.alert("minX : " + bounds.minX); });
minY
var bounds = new GBounds(132.46251447296142, 34.40051809672059, 132.46051447296142, 34.39851809672059); GEvent.addListener(map, 'click', function(overlay, point) { window.alert("minY : " + bounds.minY); });
maxX
var bounds = new GBounds(132.46251447296142, 34.40051809672059, 132.46051447296142, 34.39851809672059); GEvent.addListener(map, 'click', function(overlay, point) { window.alert("maxX : " + bounds.maxX); });
maxY
var bounds = new GBounds(132.46251447296142, 34.40051809672059, 132.46051447296142, 34.39851809672059); GEvent.addListener(map, 'click', function(overlay, point) { window.alert("maxY : " + bounds.maxY); });