﻿B4J=true
Group=Default Group
ModulesStructureVersion=1
Type=Class
Version=8.5
@EndOfDesignText@

'jCustom Marker class by Richard Noble 2020 Version 1.0

Sub Class_Globals
	
	Public Const TOP_LEFT As Int = 0
	Public Const TOP_RIGHT As Int = 1
	Public Const BOTTOM_LEFT As Int = 2
	Public Const BOTTOM_RIGHT As Int = 3
	Public Const CENTRE As Int = 4
	
End Sub

Public Sub Initialize
		
End Sub

Public Sub CustomizeMarker(M As Marker, IconFileName As String, IconWidth As Int, IconHeight As Int, AnchorPosn As Int, Draggable As Boolean) As Marker
	
	Dim IconURI As String = File.GetUri(File.DirAssets,IconFileName)
	Dim AnchorX, AnchorY As Int
	
	Select Case AnchorPosn
		
		Case BOTTOM_LEFT
			AnchorX = 0: AnchorY = IconHeight		
		Case BOTTOM_RIGHT 
			AnchorX = IconWidth: AnchorY = IconHeight
		Case TOP_LEFT
			AnchorX = 0: AnchorY = 0	
		Case TOP_RIGHT
			AnchorX = IconWidth:	
		Case CENTRE
			AnchorX = IconWidth /2: AnchorY = IconHeight / 2
						
	End Select

	Dim jo As JavaObject = M										'Align the Anchor

	jo.GetFieldJO("jsObject").RunMethod("eval", Array($"
		var image = {
    	url: '${IconURI}',
    	size: new google.maps.Size(${IconWidth},${IconHeight}),
    	origin: new google.maps.Point(0,0),
    	anchor: new google.maps.Point(${AnchorX},${AnchorY})
    	};
    	
		this.setIcon(image);
		"$))	
	
	If Draggable Then												'Make it draggable
		
		jo.GetFieldJO("jsObject").RunMethod("eval", Array($"this.setOptions({draggable: true});"$))
		
	End If

	Return M
	
End Sub


