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 解説 |
GMapGMapを呼び出すことにより、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()clickGEvent.addListener(map, 'click', function(overlay, point) {
if (overlay) {
window.alert('マーカー削除');
map.removeOverlay(overlay);
} else if (point) {
window.alert('クリックした座標 : ' + point.x + ' , ' + point.y);
}
});
moveGEvent.addListener(map, "move", function() {
var center = map.getCenterLatLng();
var latLngStr = '(' + center.x + ', ' + center.y + ')';
document.getElementById("message").innerHTML = latLngStr;
});
movestartGEvent.addListener(map, "movestart", function() {
var center = map.getCenterLatLng();
var latLngStr = '(' + center.x + ', ' + center.y + ')';
document.getElementById("message").innerHTML = latLngStr;
});
moveendGEvent.addListener(map, "moveend", function() {
var center = map.getCenterLatLng();
var latLngStr = '(' + center.x + ', ' + center.y + ')';
document.getElementById("message").innerHTML = latLngStr;
});
zoomGEvent.addListener(map, 'zoom', function(oldZoomLevel, newZoomLevel) {
window.alert('前のズームレベル : ' + oldZoomLevel);
window.alert('今のズームレベル : ' + newZoomLevel);
});
maptypechangedGEvent.addListener(map, "maptypechanged", function() {
map.addControl(new GMapTypeControl());
window.alert("マップタイプが変わりました");
});
infowindowopenGEvent.addListener(map, "infowindowopen", function() {
window.alert("サブウィンドゥが開きました");
});
infowindowcloseGEvent.addListener(map, "infowindowclose", function() {
window.alert("サブウィンドゥが閉じました");
});
addoverlayGEvent.addListener(map, "addoverlay", function(overlay) {
overlay.openInfoWindowHtml("オーバーレイが追加されました");
});
removeoverlayGEvent.addListener(map, "removeoverlay", function(overlay) {
window.setTimeout(function() {map.addOverlay(overlay);}, 5000);
});
clearoverlaysGEvent.addListener(map, "clearoverlays", function() {
window.alert("消えました");
});
GMarkerGMarker は、オーバーレイの一つで、一つの座標に一つのアイコンが表示されます。
また、アイコンを変更することやサブウィンドゥを表示することも出来ます。
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);
clickGEvent.addListener(marker, 'click', function() {
marker.openInfoWindowHtml("マーカーがクリックされました");
});
infowindowopeninfowindowopen イベントより先に動作する。
GEvent.addListener(marker, "infowindowopen", function() {
window.alert("サブウィンドゥが開きました");
});
infowindowcloseGEvent.addListener(marker, "infowindowclose", function() {
window.alert("サブウィンドゥが閉じました");
});
GPolylineGPolyline は、オーバーレイの一つで、
複数の座標の配列を与えることにより、ラインを引くことが出来ます。
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);
imagevar 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);
shadowvar 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);
iconSizevar 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);
shadowSizevar 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);
iconAnchorvar 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);
infoWindowAnchorvar 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("広島城");
printImagevar 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);
mozPrintImagevar 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);
printShadowvar 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);
transparentvar 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);
imageMapvar 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();
GXmlHttpGXmlHttp は、複数のブラウザで 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);
GXmlGXml は、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);
GXsltGXslt で、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);
GPointGPoint は、マップの座標を表します。座標は、緯度経度です。
GPoint(x, y)var map = new GMap(document.getElementById("map"));
var point = new GPoint(132.46151447296142, 34.39951809672059);
map.centerAndZoom(point, 1);
xvar map = new GMap(document.getElementById("map"));
var point = new GPoint(132.46151447296142, 34.39951809672059);
map.centerAndZoom(point, 1);
window.alert(point.x);
yvar map = new GMap(document.getElementById("map"));
var point = new GPoint(132.46151447296142, 34.39951809672059);
map.centerAndZoom(point, 1);
window.alert(point.y);
GSizeGSize は、サイズや位置を表します。
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);
widthvar 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);
heightvar 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);
GBoundsGBounds は、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 の範囲内をクリックしました!");
}
});
minXvar bounds = new GBounds(132.46251447296142, 34.40051809672059, 132.46051447296142, 34.39851809672059);
GEvent.addListener(map, 'click', function(overlay, point) {
window.alert("minX : " + bounds.minX);
});
minYvar bounds = new GBounds(132.46251447296142, 34.40051809672059, 132.46051447296142, 34.39851809672059);
GEvent.addListener(map, 'click', function(overlay, point) {
window.alert("minY : " + bounds.minY);
});
maxXvar bounds = new GBounds(132.46251447296142, 34.40051809672059, 132.46051447296142, 34.39851809672059);
GEvent.addListener(map, 'click', function(overlay, point) {
window.alert("maxX : " + bounds.maxX);
});
maxYvar bounds = new GBounds(132.46251447296142, 34.40051809672059, 132.46051447296142, 34.39851809672059);
GEvent.addListener(map, 'click', function(overlay, point) {
window.alert("maxY : " + bounds.maxY);
});