パラメータとして画像を取得する次の関数があります。
function getIcon(img){
var canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);
var dataURL = canvas.toDataURL("image/png");
return dataURL;
}
例えば:
icon = getIcon(document.getElementById("car_marker"));
と:
<img id="car_marker" src="img/car.png"/>
次に、作成されたアイコンがGoogleマップのマーカーとして使用されます。
var marker = new google.maps.Marker({ position: latLng,
map: map,
title: description,
id: id,
icon: icon
});
この部分は正常に機能していますが、getIconメソッドを変更して、パラメーターとして別の画像を取得し、両方の画像をマージする必要があります。追加する必要のある新しい画像はbase64エンコーディングであるため、以下は期待どおりに機能しません。
function getIcon(img1, img2){
var canvas = document.createElement("canvas");
canvas.width = img1.width;
canvas.height = img1.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img1, 0, 0);
ctx.drawImage(img2, 0, 0); // add the base 64 encoded image here... does not work
var dataURL = canvas.toDataURL("image/png");
return dataURL;
}
私は最終的に:
Could not convert JavaScript argument arg 0 [nsIDOMCanvasRenderingContext2D.drawImage]