interessantes Thema!
Ich habe bisher noch nie etwas mit dem Webgadget gemacht, also habe ich mich mal rangesetzt und tatsächlich auch eine Lösung gefunden.
Ob es jetzt die beste Lösung ist weiß ich nicht - aber sie funktioniert immerhin.

Code: Alles auswählen
Procedure ExternalRaiseEvent(JsonParameters$)
Debug JsonParameters$
EndProcedure
Procedure GetMarkerDragEnd(JsonParameters$)
Debug JsonParameters$
EndProcedure
Define.s script
; Script zum Überschreiben der Original-Methode: cP2W.ExternalRaiseEvent()
script = "cP2W.ExternalRaiseEvent = function (EventName, Params) {"
script + " try {"
script + " let name = EventName.replace('#','');"; Filter "PB-Konstanten"
script + " window[name](Params);";Im Original: window.external.raiseEvent(EventName, Params);
script + " }"
script + " catch (e) {"
script + " }"
script + "};"
OpenWindow(0, 100, 100, 400, 400, "Google Map Test", #PB_Window_SystemMenu)
WebViewGadget(0, 0, 0, 400, 400)
SetGadgetText(0, "https://www.dbsthumb.de/livemap/index2.html")
BindWebViewCallback(0, "Debug", @ExternalRaiseEvent())
BindWebViewCallback(0, "PB_EventType_GoogleMapMarker_DragEnd", @GetMarkerDragEnd())
MessageRequester( "Warte auf Karte", "Ok wenn fertig")
WebViewExecuteScript(0, script)
WebViewExecuteScript(0, "GoogleMapAddPin(0, 51.0275764465, 13.7329101563, 1, 1);")
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
Das Problem scheint zu sein, dass die Methode "cP2W.ExternalRaiseEvent()", die Methode "window.external.raiseEvent()" verwendet - welche nur vom IE unterstützt wurde.
Problematisch ist auch, dass in der "map.js" in Zeile 1036, die Variable "MarkerEvent"('PB-Konstanten') als "Evantname" übergeben wird. Besser wäre es, als EventNamen "MarkerInfo" zu übergeben, und das "MarkerEvent" als weiteren Parameter.
.