Ich versuche, fabricJS mit Google Maps zu kombinieren. Was ich getan habe, ist, eine Leinwand über den Kartenausschnitt zu legen, um Formen über der Karte anzuzeigen. Das Problem ist, dass Google Map-Ereignisse nicht mehr Trigger sind. Ich suchte im Internet nach Lösungen und fand, dass das css-Tag pointer-event
die Klickereignisse an die darunter liegenden Ebenen weiterleiten sollte, aber das funktionierte nicht für mich. Ich habe auch versucht, ein Ereignis mit addDomListener
hinzuzufügen, aber auch kein Glück. Das Klickereignis würde ausgelöst, aber die google.maps.event.trigger
nicht.Weiterleiten von Klickereignissen von Canvas an div
Ich habe gerade angefangen, also gibt es nichts Besonderes zu sehen. Ich bin irgendwie neu in der Webentwicklung, also dachte ich, ich frage hier, bevor ich meine Zeit mit etwas verschwenden, das nicht möglich ist.
Dies ist meine HTML-Datei:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
#holder {
height:700px;
width: 700px;
position:relative;
}
#canvasholder{
height: 700px;
width: 700px;
position: absolute;
}
html, body {
height: 100%;
margin: 0;
padding: 0;
}
#map-canvas {
position: absolute;
height: 700px;
width: 700px;
z-index: -1;
}
#canvas{
position: absolute;
height: 700px;
widht: 700px;
pointer-events: none;
opacity: 1;
z-index: 1;
}
</style>
</head>
<body>
<script src="https://rawgit.com/kangax/fabric.js/master/dist/fabric.js"></script>
<div id="holder">
<div id="canvasholder">
<canvas id="canvas"></canvas>
</div>
<div id="map-canvas"></div>
</div>
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAJ4aYR2NFbLLzh_tkya-rE40gCl-hPpLc&callback=initMap"
async defer></script>
<script src="./app.js"></script>
</body>
</html>
Und meine Javascript-Datei:
var map;
var canvas;
function initMap() {
map = new google.maps.Map(document.getElementById('map-canvas'), {
center: {lat: -34.397, lng: 150.644},
zoom: 8
});
google.maps.event.addDomListener(document.getElementById("canvasholder").firstElementChild, "click", function(e){
google.maps.event.trigger(map, "click", e);
})
canvas = new fabric.Canvas("canvas");
canvas.setHeight(700);
canvas.setWidth(700);
canvas.setBackgroundColor('', canvas.renderAll.bind(canvas));
canvas.add(new fabric.Circle({ radius: 30, fill: '#f55', top: 100, left: 100 }));
}
damit verbundene Frage: [? Wie füge ich einen einfachen onClick Event-Handler auf ein Canvas-Element] (http://stackoverflow.com/questions/9880279/how-do-i-add- a-simple-onclick-event-handler-zu-einem-canvas-element) – geocodezip
Möglicherweise haben Sie einen Tippfehler, die korrekte Syntax ist: 'pointer-events: none;' (beachten Sie die Plural "Ereignisse"). – markE