react-map4d-map 1.3.2 → 1.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +602 -159
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +602 -159
- package/dist/index.modern.js.map +1 -1
- package/package.json +3 -3
package/dist/index.modern.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.modern.js","sources":["../src/context/Map4dContext.ts","../src/context/MarkerClusterContext.ts","../src/components/MFBuilding.tsx","../src/components/MFBuildingOverlay.tsx","../src/tool/variableTool.ts","../src/components/MFCircle.tsx","../src/components/MFDataLayer.tsx","../src/components/MFDirectionsRenderer.tsx","../src/components/MFGroundOverlay.tsx","../src/components/MFImageOverlay.tsx","../src/components/MFMap.tsx","../src/components/MFMarker.tsx","../src/components/MFMarkerCluster.tsx","../src/components/MFPOI.tsx","../src/components/MFPOIOverlay.tsx","../src/components/MFPolygon.tsx","../src/components/MFPolyline.tsx","../src/components/MFTileOverlay.tsx","../src/engine/Vector2.ts","../src/engine/MathUtils.ts","../src/engine/Vector3.ts","../src/engine/Matrix.ts","../src/engine/Color.ts","../src/models/MapConstants.ts","../src/models/Map4dObject.ts","../src/models/LatLng.ts","../src/map/ProjectionMercator.ts","../src/ultils/CoordinateTransformer.ts"],"sourcesContent":["import { createContext } from 'react';\r\n\r\nexport const defaultCt = {\r\n map: null as any,\r\n}\r\nexport const Map4dContext = createContext(defaultCt)","import { createContext } from 'react';\r\n\r\nexport const markerClusterDefaultContext = {\r\n addMarker: null as unknown as (marker: map4d.Marker)=>void,\r\n removeMarker: null as unknown as (marker: map4d.Marker)=>void,\r\n}\r\nexport const MarkerClusterContext = createContext(markerClusterDefaultContext)","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface BuildingProps {\r\n position?: map4d.ILatLng\r\n name?: string\r\n scale?: number\r\n bearing?: number\r\n elevation?: number\r\n height?: number\r\n model?: string\r\n texture?: string\r\n coordinates?: map4d.ILatLng[]\r\n zIndex?: number\r\n visible?: boolean\r\n draggable?: boolean\r\n userInteractionEnabled?: boolean\r\n selected?: boolean\r\n growUp?: boolean\r\n map?: map4d.Map\r\n onCreated?: (building: map4d.Building) => void\r\n}\r\nconst MFBuilding = (props: BuildingProps) => {\r\n const {\r\n position,\r\n name,\r\n scale,\r\n bearing,\r\n elevation,\r\n height,\r\n model,\r\n texture,\r\n coordinates,\r\n visible,\r\n draggable,\r\n userInteractionEnabled,\r\n selected,\r\n growUp,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const buildingRef = useRef(null as unknown as map4d.Building)\r\n\r\n useEffect(() => {\r\n if (theMap && !buildingRef.current && ((coordinates && coordinates?.length > 0) || model)) {\r\n let option = {\r\n position: position || { lat: 10.793113, lng: 106.720739 },\r\n name: name,\r\n scale: scale,\r\n bearing: bearing,\r\n elevation: elevation,\r\n height: height,\r\n model: model,\r\n texture: texture,\r\n coordinates: coordinates,\r\n visible: visible,\r\n draggable: draggable,\r\n userInteractionEnabled: userInteractionEnabled,\r\n selected: selected,\r\n growUp: growUp\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n buildingRef.current = new map4d.Building(option)\r\n buildingRef.current?.setMap(theMap)\r\n onCreated && onCreated(buildingRef.current)\r\n }\r\n }, [theMap, position, coordinates, model])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n buildingRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n buildingRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n buildingRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n buildingRef.current?.setPosition(position as map4d.ILatLng)\r\n }, [position])\r\n useEffect(() => {\r\n name != undefined && buildingRef.current?.setName(name)\r\n }, [name])\r\n useEffect(() => {\r\n scale != undefined && buildingRef.current?.setScale(scale)\r\n }, [scale])\r\n useEffect(() => {\r\n if (bearing != undefined) {\r\n buildingRef.current?.setBearing(bearing)\r\n }\r\n }, [bearing])\r\n useEffect(() => {\r\n elevation != undefined && buildingRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n height != undefined && buildingRef.current?.setHeight(height)\r\n }, [height])\r\n useEffect(() => {\r\n model != undefined && buildingRef.current?.setModel(model)\r\n }, [model])\r\n useEffect(() => {\r\n texture != undefined && buildingRef.current?.setTexture(texture)\r\n }, [texture])\r\n useEffect(() => {\r\n coordinates != undefined && buildingRef.current?.setCoordinates(coordinates)\r\n }, [coordinates])\r\n useEffect(() => {\r\n visible != undefined && buildingRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n draggable != undefined && buildingRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n useEffect(() => {\r\n userInteractionEnabled != undefined && buildingRef.current?.setUserInteraction(userInteractionEnabled)\r\n }, [userInteractionEnabled])\r\n useEffect(() => {\r\n selected != undefined && buildingRef.current?.setSelected(selected)\r\n }, [selected])\r\n useEffect(() => {\r\n growUp != undefined && buildingRef.current?.setGrowUp(growUp)\r\n }, [growUp])\r\n return null\r\n}\r\nexport default MFBuilding\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface BuildingOverlayProps {\r\n getUrl: (x: number, y: number, zoom: number) => any\r\n parserData: (response: any) => any\r\n prefixId?: string\r\n visible?: boolean\r\n map?: map4d.Map\r\n onCreated?: (buildingOverlay: map4d.BuildingOverlay) => void\r\n}\r\nconst MFBuildingOverlay = (props: BuildingOverlayProps) => {\r\n const {\r\n getUrl,\r\n visible,\r\n parserData,\r\n prefixId,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const buildingOverlayRef = useRef<map4d.BuildingOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n buildingOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n let option = {\r\n getUrl: getUrl || { lat: 10.793113, lng: 106.720739 },\r\n visible: visible,\r\n parserData: parserData,\r\n prefixId: prefixId\r\n } as any\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n buildingOverlayRef.current = new map4d.BuildingOverlay(option)\r\n buildingOverlayRef.current?.setMap(theMap as map4d.Map)\r\n onCreated && onCreated(buildingOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !buildingOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n buildingOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n buildingOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n buildingOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [getUrl, parserData, prefixId, visible])\r\n return null\r\n}\r\nexport default MFBuildingOverlay\r\n","export class VariableTool {\r\n static hasValue = (variable: any) => {\r\n if (variable != undefined && variable != null) {\r\n return true\r\n }\r\n return false\r\n }\r\n}","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\nimport { VariableTool } from '../tool';\r\n\r\ninterface CircleProps {\r\n center: map4d.ILatLng\r\n radius: number\r\n fillColor?: string\r\n fillOpacity?: number\r\n visible?: boolean\r\n strokeColor?: string\r\n strokeWidth?: number\r\n draggable?: boolean\r\n zIndex?: number\r\n elevation?: number\r\n userInteractionEnabled?: boolean\r\n map?: map4d.Map\r\n onCreated?: (circle: map4d.Circle) => void\r\n}\r\n\r\nconst MFCircle = (props: CircleProps) => {\r\n const {\r\n center,\r\n radius,\r\n fillColor,\r\n fillOpacity,\r\n visible,\r\n strokeColor,\r\n strokeWidth,\r\n draggable,\r\n zIndex,\r\n elevation,\r\n userInteractionEnabled,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const circleRef = useRef<map4d.Circle>()\r\n\r\n useEffect(() => {\r\n if (theMap && !circleRef.current) {\r\n let option = {\r\n center: center || { lat: 10.793113, lng: 106.720739 },\r\n radius: radius,\r\n fillColor: fillColor,\r\n fillOpacity: fillOpacity,\r\n visible: visible,\r\n strokeColor: strokeColor,\r\n strokeWidth: strokeWidth,\r\n draggable: draggable,\r\n zIndex: zIndex,\r\n elevation: elevation,\r\n userInteractionEnabled: userInteractionEnabled,\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n circleRef.current = new map4d.Circle(option)\r\n circleRef.current?.setMap(theMap)\r\n onCreated && onCreated(circleRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n circleRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n circleRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n circleRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (VariableTool.hasValue(center)) {\r\n circleRef.current?.setCenter(center)\r\n }\r\n\r\n }, [center])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(radius)) {\r\n circleRef.current?.setRadius(radius as number)\r\n }\r\n }, [radius])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(fillColor)) {\r\n circleRef.current?.setFillColor(fillColor as string)\r\n }\r\n }, [fillColor])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(fillOpacity)) {\r\n circleRef.current?.setFillOpacity(fillOpacity as number)\r\n }\r\n }, [fillOpacity])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(visible)) {\r\n circleRef.current?.setVisible(visible as boolean)\r\n }\r\n }, [visible])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(strokeColor)) {\r\n circleRef.current?.setStrokeColor(strokeColor as string)\r\n }\r\n }, [strokeColor])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(strokeWidth)) {\r\n circleRef.current?.setStrokeWidth(strokeWidth as number)\r\n }\r\n }, [strokeWidth])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(draggable)) {\r\n circleRef.current?.setDraggable(draggable as boolean)\r\n }\r\n }, [draggable])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(zIndex)) {\r\n circleRef.current?.setZIndex(zIndex as number)\r\n }\r\n }, [zIndex])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(elevation)) {\r\n circleRef.current?.setElevation(elevation as number)\r\n }\r\n }, [elevation])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(userInteractionEnabled)) {\r\n circleRef.current?.setUserInteraction(userInteractionEnabled as boolean)\r\n }\r\n }, [userInteractionEnabled])\r\n\r\n return null\r\n}\r\n\r\nexport default MFCircle\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface DataLayerProps {\r\n geoJsonString: string\r\n map?: map4d.Map\r\n onCreated?: (dataLeyer?: map4d.Data.Feature[]) => void\r\n}\r\n\r\nconst MFDataLayer = (props: DataLayerProps) => {\r\n const {\r\n geoJsonString,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const dataLayerRef = useRef<map4d.Data.Feature[]>()\r\n\r\n\r\n const reCreate = () => {\r\n dataLayerRef.current?.forEach((feature) => {\r\n theMap?.data?.remove(feature)\r\n })\r\n dataLayerRef.current = theMap?.data?.addGeoJson(geoJsonString)\r\n onCreated && onCreated(dataLayerRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n return () => {\r\n dataLayerRef.current?.forEach((feature) => {\r\n theMap?.data?.remove(feature)\r\n })\r\n }\r\n }, [])\r\n return null\r\n}\r\nexport default MFDataLayer\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface DirectionsRendererProps {\r\n routes?: string | object | map4d.RouteOptions | map4d.ILatLng[][]\r\n\r\n /**\r\n * @deprecated The `directions` prop is no longer support, which is subject to removal in a future versions. Use\r\n * the `routes` prop instead.\r\n */\r\n directions?: string\r\n activedIndex?: number\r\n\r\n activeStrokeWidth?: number\r\n activeStrokeColor?: string\r\n activeOutlineWidth?: number\r\n activeOutlineColor?: string\r\n activeStrokePattern?: map4d.PatternItem\r\n\r\n inactiveStrokeWidth?: number\r\n inactiveStrokeColor?: string\r\n inactiveOutlineWidth?: number\r\n inactiveOutlineColor?: string\r\n inactiveStrokePattern?: map4d.PatternItem\r\n\r\n originMarkerOptions?: map4d.MarkerOptions\r\n destinationMarkerOptions?: map4d.MarkerOptions\r\n waypointMarkerOptions?: map4d.MarkerOptions[]\r\n\r\n onMarkerDragEnd?: Function,\r\n\r\n map?: map4d.Map,\r\n onCreated?: (directionsRenderer?: map4d.DirectionsRenderer) => void\r\n onHover?: (args: any) => void\r\n onMouseOut?: (args: any) => void\r\n onMouseOver?: (args: any) => void\r\n onMouseMove?: (args: any) => void\r\n}\r\n\r\nconst MFDirectionsRenderer = (props: DirectionsRendererProps) => {\r\n const {\r\n routes,\r\n activedIndex,\r\n activeStrokeWidth,\r\n activeStrokeColor,\r\n activeOutlineWidth,\r\n activeOutlineColor,\r\n activeStrokePattern,\r\n inactiveStrokeWidth,\r\n inactiveStrokeColor,\r\n inactiveOutlineWidth,\r\n inactiveOutlineColor,\r\n inactiveStrokePattern,\r\n originMarkerOptions,\r\n destinationMarkerOptions,\r\n waypointMarkerOptions,\r\n onMarkerDragEnd,\r\n map,\r\n onHover,\r\n onCreated,\r\n onMouseOut,\r\n onMouseOver,\r\n onMouseMove\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const directionRef = useRef<any>()\r\n\r\n useEffect(() => {\r\n if (theMap && !directionRef.current) {\r\n let option = {\r\n routes,\r\n activedIndex,\r\n activeStrokeWidth,\r\n activeStrokeColor,\r\n activeOutlineWidth,\r\n activeOutlineColor,\r\n activeStrokePattern,\r\n inactiveStrokeWidth,\r\n inactiveStrokeColor,\r\n inactiveOutlineWidth,\r\n inactiveOutlineColor,\r\n inactiveStrokePattern,\r\n originMarkerOptions,\r\n destinationMarkerOptions,\r\n waypointMarkerOptions,\r\n onMarkerDragEnd\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n directionRef.current = new map4d.DirectionsRenderer(option)\r\n directionRef.current?.setMap(theMap)\r\n directionRef.current.onHover = props.onHover\r\n directionRef.current.onMouseOut = onMouseOut\r\n directionRef.current.onMouseOver = onMouseOver\r\n directionRef.current.onMouseMove = onMouseMove\r\n onCreated && onCreated(directionRef.current)\r\n }\r\n return () => {\r\n directionRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (directionRef.current) {\r\n directionRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n\r\n useEffect(() => {\r\n if (directionRef.current) {\r\n directionRef.current.onMouseOut = onMouseOut\r\n }\r\n }, [onMouseOut])\r\n\r\n useEffect(() => {\r\n if (directionRef.current) {\r\n directionRef.current.onMouseOver = onMouseOver\r\n }\r\n }, [onMouseOver])\r\n\r\n useEffect(() => {\r\n if (directionRef.current) {\r\n directionRef.current.onMouseMove = onMouseMove\r\n }\r\n }, [onMouseMove])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n directionRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n directionRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n directionRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n routes != undefined && directionRef.current?.setRoutes(routes)\r\n }, [routes])\r\n useEffect(() => {\r\n activedIndex != undefined && directionRef.current?.setActivedIndex(activedIndex)\r\n }, [activedIndex])\r\n useEffect(() => {\r\n activeStrokePattern != undefined && directionRef.current?.setActiveStrokePattern(activeStrokePattern)\r\n }, [activeStrokePattern])\r\n useEffect(() => {\r\n inactiveStrokePattern != undefined && directionRef.current?.setInactiveStrokePattern(inactiveStrokePattern)\r\n }, [inactiveStrokePattern])\r\n useEffect(() => {\r\n let option = {\r\n routes,\r\n activedIndex,\r\n activeStrokeWidth,\r\n activeStrokeColor,\r\n activeOutlineWidth,\r\n activeOutlineColor,\r\n activeStrokePattern,\r\n inactiveStrokeWidth,\r\n inactiveStrokeColor,\r\n inactiveOutlineWidth,\r\n inactiveOutlineColor,\r\n inactiveStrokePattern,\r\n originMarkerOptions,\r\n destinationMarkerOptions,\r\n waypointMarkerOptions,\r\n onMarkerDragEnd\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n directionRef.current?.setOptions(option)\r\n },\r\n [\r\n activeStrokeWidth,\r\n activeStrokeColor,\r\n activeOutlineWidth,\r\n activeOutlineColor,\r\n inactiveStrokeColor,\r\n inactiveOutlineWidth,\r\n inactiveOutlineColor,\r\n originMarkerOptions,\r\n destinationMarkerOptions,\r\n waypointMarkerOptions,\r\n onMarkerDragEnd\r\n ]\r\n )\r\n\r\n\r\n return null\r\n}\r\nexport default MFDirectionsRenderer\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface GroundOverlayProps extends map4d.GroundOverlayOptions {\r\n map?: map4d.Map\r\n onCreated?: (groundOverlay: map4d.GroundOverlay) => void\r\n}\r\n\r\nconst MFGroundOverlay = (props: GroundOverlayProps) => {\r\n const {\r\n bounds,\r\n getUrl,\r\n override,\r\n visible,\r\n zIndex,\r\n opacity,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const groundOverlayRef = useRef<map4d.GroundOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n groundOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n let option = {\r\n bounds,\r\n getUrl: getUrl,\r\n override,\r\n visible: visible,\r\n zIndex: zIndex,\r\n opacity: opacity\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n groundOverlayRef.current = new map4d.TileOverlay(option)\r\n groundOverlayRef.current?.setMap(theMap as map4d.Map)\r\n onCreated && onCreated(groundOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !groundOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n groundOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n groundOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n groundOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [bounds, getUrl, override])\r\n useEffect(() => {\r\n visible != undefined && groundOverlayRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n zIndex != undefined && groundOverlayRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n opacity != undefined && groundOverlayRef.current?.setOpacity(opacity)\r\n }, [opacity])\r\n return null\r\n}\r\nexport default MFGroundOverlay\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface ImageOverlayProps extends map4d.ImageOverlayOptions {\r\n map?: map4d.Map,\r\n onCreated?: (imageOverlay: map4d.ImageOverlay) => void\r\n}\r\n\r\nconst MFImageOverlay = (props: ImageOverlayProps) => {\r\n const {\r\n url,\r\n bounds,\r\n visible,\r\n zIndex,\r\n opacity,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const imageOverlayRef = useRef<map4d.ImageOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n imageOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n let option = {\r\n url,\r\n bounds: bounds,\r\n visible: visible,\r\n zIndex: zIndex,\r\n opacity: opacity\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n imageOverlayRef.current = new map4d.ImageOverlay(option)\r\n imageOverlayRef.current?.setMap(theMap as map4d.Map)\r\n onCreated && onCreated(imageOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !imageOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n imageOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n imageOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n imageOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [url, bounds, zIndex])\r\n useEffect(() => {\r\n visible != undefined && imageOverlayRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n opacity != undefined && imageOverlayRef.current?.setOpacity(opacity)\r\n }, [opacity])\r\n return null\r\n}\r\nexport default MFImageOverlay\r\n","import React, { Fragment, useEffect, useRef, useState } from 'react';\r\nimport { Map4dContext } from '../context';\r\nimport { MapEventEnum } from '../enum';\r\n\r\nexport function addLibrary(url: string, id: string) {\r\n let scriptId = `script_${id}`\r\n let exist = document.getElementById(scriptId)\r\n if (exist) {\r\n return null\r\n }\r\n const script = document.createElement('script')\r\n script.src = url;\r\n script.defer = true;\r\n script.id = scriptId\r\n document.body.appendChild(script)\r\n return script\r\n}\r\n\r\nconst createId = () => {\r\n var dt = new Date().getTime();\r\n var uuid = 'xxxxxxxx_xxxx_4xxx_yxxx_xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = (dt + Math.random() * 16) % 16 | 0;\r\n dt = Math.floor(dt / 16);\r\n return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n return uuid;\r\n}\r\ninterface MapOptions {\r\n center?: any\r\n zoom?: number\r\n minZoom?: number\r\n maxZoom?: number\r\n maxNativeZoom?: number\r\n geolocate?: boolean\r\n tilt?: number\r\n bearing?: number\r\n controls?: boolean\r\n mapType?: any\r\n controlOptions?: any\r\n restrictionBounds?: any\r\n shouldChangeMapMode?: Function\r\n cooperativeGestures?: boolean\r\n}\r\ninterface MapProps {\r\n mapid?: string\r\n options: MapOptions,\r\n version: string\r\n accessKey: string,\r\n environment?: \"dev\" | \"test\" | undefined | null,\r\n sdkDomain?: string | null\r\n onMapReady?: (map: any, key?: string) => void\r\n onClickLocation?: (args: any) => void\r\n onRightClickLocation?: (args: any) => void\r\n onCameraChanging?: (args: any) => void\r\n onTilesLoaded?: (args: any) => void\r\n children?: any\r\n}\r\n\r\nconst MFMap = (props: MapProps) => {\r\n\r\n const callback = useRef(`callback`)\r\n const mapDomRef = useRef<any>()\r\n const mapRef = useRef<map4d.Map>()\r\n const scriptElement = useRef<HTMLScriptElement>()\r\n const url = useRef<string>()\r\n const events = useRef<any[]>([])\r\n\r\n const [map, setMap] = useState<map4d.Map>()\r\n\r\n\r\n useEffect(() => {\r\n const id = createId()\r\n callback.current = `callback_${id}`\r\n const createCallback = () => {\r\n window[callback.current] = () => {\r\n let options = props.options\r\n mapRef.current = new window.map4d.Map(mapDomRef.current, options)\r\n if (props.onMapReady) {\r\n props.onMapReady(mapRef.current, id)\r\n }\r\n registerEvent()\r\n setMap(mapRef.current)\r\n }\r\n }\r\n let domain = `https://api${props.environment ? \"-\" + props.environment : \"\"}.map4d.vn`\r\n if (props.sdkDomain) {\r\n domain = props.sdkDomain\r\n }\r\n let urlNew = `${domain}/sdk/map/js?version=${props.version}&key=${props.accessKey}&callback=${callback.current}`\r\n if (props.mapid) {\r\n urlNew += `&mapId=${props.mapid}`\r\n }\r\n createCallback()\r\n let script = addLibrary(urlNew, id)\r\n if (script) {\r\n scriptElement.current = script\r\n }\r\n url.current = urlNew\r\n return () => {\r\n const destroy = () => {\r\n delete window[callback.current]\r\n if (scriptElement.current != null) {\r\n scriptElement.current.remove()\r\n }\r\n events.current?.forEach((t: any) => {\r\n t?.remove()\r\n })\r\n mapRef.current?.destroy()\r\n url.current = undefined\r\n }\r\n destroy()\r\n }\r\n }, [props.environment, props.version, props.accessKey])\r\n\r\n useEffect(() => {\r\n props.options?.mapType != undefined && mapRef.current?.setMapType(props.options?.mapType)\r\n }, [props.options?.mapType])\r\n\r\n useEffect(() => {\r\n if (props.options?.center != undefined) {\r\n let camera = mapRef.current?.getCamera()\r\n camera?.setTarget(props.options?.center)\r\n mapRef.current?.moveCamera(camera)\r\n }\r\n props.options?.mapType != undefined && mapRef.current?.setMapType(props.options?.mapType)\r\n }, [props.options?.center])\r\n\r\n const registerEvent = () => {\r\n let eventClickMarker = mapRef.current?.addListener(MapEventEnum.click, (args: any) => {\r\n args.marker?.onClick && args.marker?.onClick(args)\r\n }, {\r\n marker: true\r\n })\r\n let eventRightClickMarker = mapRef.current?.addListener(MapEventEnum.rightClick, (args: any) => {\r\n args.marker?.onRightClick && args.marker?.onRightClick(args)\r\n }, {\r\n marker: true\r\n })\r\n let eventDragEndMarker = mapRef.current?.addListener(MapEventEnum.dragEnd, (args: any) => {\r\n args.marker?.onDragEnd && args.marker?.onDragEnd(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventHoverMarker = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.marker?.onHover && args.marker?.onHover(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventHoverPolygon = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.polygon?.onHover && args.polygon?.onHover(args)\r\n }, {\r\n polygon: true\r\n })\r\n\r\n let eventHoverPolyline = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.polyline?.onHover && args.polyline?.onHover(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventHoverDirection = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.renderer?.onHover && args.renderer?.onHover(args)\r\n }, {\r\n directions: true\r\n })\r\n\r\n let eventClickPolyline = mapRef.current?.addListener(MapEventEnum.click, (args: any) => {\r\n args.polyline?.onClick && args.polyline?.onClick(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventMouseOutDirection = mapRef.current?.addListener(MapEventEnum.mouseOut, (args: any) => {\r\n args.renderer?.onMouseOut && args.renderer?.onMouseOut(args)\r\n }, {\r\n directions: true\r\n })\r\n\r\n let eventMouseOverDirection = mapRef.current?.addListener(MapEventEnum.mouseOver, (args: any) => {\r\n args.renderer?.onMouseOver && args.renderer?.onMouseOver(args)\r\n }, {\r\n directions: true\r\n })\r\n\r\n let eventMouseMoveDirection = mapRef.current?.addListener(MapEventEnum.mouseMove, (args: any) => {\r\n args.renderer?.onMouseMove && args.renderer?.onMouseMove(args)\r\n }, {\r\n directions: true\r\n })\r\n\r\n let eventMouseOutPolyline = mapRef.current?.addListener(MapEventEnum.mouseOut, (args: any) => {\r\n args.polyline?.onMouseOut && args.polyline?.onMouseOut(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventMouseOverPolyline = mapRef.current?.addListener(MapEventEnum.mouseOver, (args: any) => {\r\n args.polyline?.onMouseOver && args.polyline?.onMouseOver(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventMouseMovePolyline = mapRef.current?.addListener(MapEventEnum.mouseMove, (args: any) => {\r\n args.polyline?.onMouseMove && args.polyline?.onMouseMove(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventMouseOutMarker = mapRef.current?.addListener(MapEventEnum.mouseOut, (args: any) => {\r\n args.marker?.onMouseOut && args.marker?.onMouseOut(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventMouseOverMarker = mapRef.current?.addListener(MapEventEnum.mouseOver, (args: any) => {\r\n args.marker?.onMouseOver && args.marker?.onMouseOver(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventMouseMoveMarker = mapRef.current?.addListener(MapEventEnum.mouseMove, (args: any) => {\r\n args.marker?.onMouseMove && args.marker?.onMouseMove(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventClickPoi = mapRef.current?.addListener(MapEventEnum.click, (args: any) => {\r\n args.poi?.onClick && args.poi?.onClick(args)\r\n }, {\r\n poi: true\r\n })\r\n\r\n let eventHoverPoi = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.poi?.onHover && args.poi?.onHover(args)\r\n }, {\r\n poi: true\r\n })\r\n\r\n events.current = events.current.concat([\r\n eventClickMarker,\r\n eventRightClickMarker,\r\n eventDragEndMarker,\r\n eventHoverMarker,\r\n eventHoverPolygon,\r\n eventHoverPolyline,\r\n eventHoverDirection,\r\n eventClickPolyline,\r\n eventMouseOutDirection,\r\n eventMouseOverDirection,\r\n eventMouseMoveDirection,\r\n eventMouseOutPolyline,\r\n eventMouseOverPolyline,\r\n eventMouseMovePolyline,\r\n eventMouseOutMarker,\r\n eventMouseOverMarker,\r\n eventMouseMoveMarker,\r\n eventClickPoi,\r\n eventHoverPoi\r\n ])\r\n if (props.onClickLocation) {\r\n let onClickLocation = mapRef.current?.addListener(MapEventEnum.click, (args: any) => {\r\n props.onClickLocation && props.onClickLocation(args)\r\n }, {\r\n location: true\r\n })\r\n events.current.push(onClickLocation)\r\n }\r\n if (props.onRightClickLocation) {\r\n let onRightClickLocation = mapRef.current?.addListener(MapEventEnum.rightClick, (args: any) => {\r\n props.onRightClickLocation && props.onRightClickLocation(args)\r\n }, {\r\n location: true\r\n })\r\n events.current.push(onRightClickLocation)\r\n }\r\n if (props.onTilesLoaded) {\r\n let onTilesLoaded = mapRef.current?.addListener(MapEventEnum.tilesLoaded, (args: any) => {\r\n props.onTilesLoaded && props.onTilesLoaded(args)\r\n }, {\r\n location: true\r\n })\r\n events.current.push(onTilesLoaded)\r\n }\r\n if (props.onCameraChanging) {\r\n let onCameraChanging = mapRef.current?.addListener(MapEventEnum.cameraChanging, (args: any) => {\r\n props.onCameraChanging && props.onCameraChanging(args)\r\n }, {\r\n location: true\r\n })\r\n events.current.push(onCameraChanging)\r\n }\r\n }\r\n let newContext = {\r\n map: map\r\n }\r\n return (\r\n <Fragment>\r\n <div\r\n style={{ width: '100%', height: '100%', display: 'block' }}\r\n ref={mapDomRef}\r\n >\r\n </div>\r\n <Map4dContext.Provider value={newContext}>\r\n\r\n {\r\n props.children\r\n }\r\n </Map4dContext.Provider>\r\n </Fragment>\r\n\r\n );\r\n}\r\n\r\nexport default MFMap;\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext, MarkerClusterContext } from '../context';\r\n\r\ninterface IconProps {\r\n width: number,\r\n height: number,\r\n url: string\r\n}\r\ninterface MarkerProps {\r\n position: any\r\n visible?: boolean\r\n anchor?: any\r\n labelAnchor?: any\r\n icon?: IconProps\r\n elevation?: number\r\n rotation?: number\r\n title?: string\r\n snippet?: string\r\n windowAnchor?: any\r\n zIndex?: number\r\n label?: any\r\n draggable?: boolean\r\n iconView?: string | Node\r\n userInteractionEnabled?: boolean\r\n map?: any,\r\n infoWindow?: string | Node\r\n infoContents?: string | Node\r\n showInfoWindow?: boolean\r\n onClick?: (args: any) => void\r\n onCreated?: (marker: any) => void\r\n onRightClick?: (args: any) => void\r\n onDragEnd?: (args: any) => void\r\n onHover?: (args: any) => void\r\n onMouseOut?:(args: any)=> void\r\n onMouseOver?:(args: any)=> void\r\n onMouseMove?: (args: any)=> void\r\n}\r\n\r\nconst MFMarker = (props: MarkerProps) => {\r\n const {\r\n position,\r\n visible = true,\r\n anchor,\r\n labelAnchor,\r\n icon,\r\n elevation,\r\n rotation,\r\n title,\r\n snippet,\r\n windowAnchor,\r\n zIndex,\r\n label,\r\n draggable,\r\n iconView,\r\n userInteractionEnabled,\r\n map,\r\n onCreated,\r\n onClick,\r\n onRightClick,\r\n onDragEnd,\r\n onHover,\r\n onMouseOut,\r\n onMouseOver,\r\n onMouseMove\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const markerClusterContext = useContext(MarkerClusterContext)\r\n\r\n const theMap = map || map4dContext.map\r\n const markerRef = useRef<any>()\r\n\r\n useEffect(() => {\r\n if (theMap && !markerRef.current) {\r\n let option = {\r\n position: position || { lat: 10.793113, lng: 106.720739 },\r\n visible: visible,\r\n anchor: anchor,\r\n labelAnchor: labelAnchor,\r\n elevation: elevation,\r\n rotation: rotation,\r\n title: title,\r\n snippet: snippet,\r\n windowAnchor: windowAnchor,\r\n zIndex: zIndex,\r\n label: label,\r\n draggable: draggable,\r\n iconView: iconView,\r\n userInteractionEnabled: userInteractionEnabled\r\n } as map4d.MarkerOptions\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n if (icon) {\r\n let iconT = new map4d.Icon(icon.width, icon.height, icon.url)\r\n option.icon = iconT\r\n }\r\n markerRef.current = new map4d.Marker(option)\r\n if (props.infoWindow != undefined) {\r\n markerRef.current.setInfoWindow(props.infoWindow)\r\n }\r\n if (props.infoContents != undefined) {\r\n markerRef.current.setInfoContents(props.infoContents)\r\n }\r\n if (!markerClusterContext?.addMarker) {\r\n markerRef.current.setMap(theMap)\r\n }\r\n if (props.showInfoWindow != undefined) {\r\n props.showInfoWindow ? markerRef.current?.showInfoWindow() : markerRef.current?.hideInfoWindow()\r\n }\r\n markerRef.current.onClick = onClick\r\n markerRef.current.onRightClick = props.onRightClick\r\n markerRef.current.onDragEnd = props.onDragEnd\r\n markerRef.current.onHover = props.onHover\r\n markerRef.current.onMouseOut = onMouseOut\r\n markerRef.current.onMouseOver = onMouseOver\r\n markerRef.current.onMouseMove = onMouseMove\r\n onCreated && onCreated(markerRef.current)\r\n markerClusterContext?.addMarker && markerClusterContext?.addMarker(markerRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n if (!markerClusterContext?.addMarker) {\r\n markerRef.current?.setMap(theMap)\r\n }\r\n }\r\n return () => {\r\n if (!markerClusterContext?.addMarker) {\r\n markerRef.current?.setMap(null)\r\n }\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n if (!markerClusterContext?.addMarker) {\r\n markerRef.current?.setMap(null)\r\n }\r\n markerRef.current && markerClusterContext?.removeMarker && markerClusterContext?.removeMarker(markerRef.current)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onMouseOut = onMouseOut\r\n }\r\n }, [onMouseOut])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onMouseOver = onMouseOver\r\n }\r\n }, [onMouseOver])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onMouseMove = onMouseMove\r\n }\r\n }, [onMouseMove])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onClick = onClick\r\n }\r\n }, [onClick])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onRightClick = onRightClick\r\n }\r\n }, [onRightClick])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onHover = onDragEnd\r\n }\r\n }, [onDragEnd])\r\n\r\n useEffect(() => {\r\n markerRef.current?.setPosition(position)\r\n }, [position])\r\n useEffect(() => {\r\n markerRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n anchor != undefined && markerRef.current?.setAnchor(anchor)\r\n }, [anchor])\r\n useEffect(() => {\r\n labelAnchor != undefined && markerRef.current?.setLabelAnchor(labelAnchor)\r\n }, [labelAnchor])\r\n useEffect(() => {\r\n icon != undefined && markerRef.current?.setIcon(icon)\r\n }, [icon])\r\n useEffect(() => {\r\n elevation != undefined && markerRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n rotation != undefined && markerRef.current?.setRotation(rotation)\r\n }, [rotation])\r\n useEffect(() => {\r\n title != undefined && markerRef.current?.setTitle(title)\r\n }, [title])\r\n useEffect(() => {\r\n snippet != undefined && markerRef.current?.setSnippet(snippet)\r\n }, [snippet])\r\n useEffect(() => {\r\n windowAnchor != undefined && markerRef.current?.setWindowAnchor(windowAnchor)\r\n }, [windowAnchor])\r\n useEffect(() => {\r\n zIndex != undefined && markerRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n label != undefined && markerRef.current?.setLabel(label)\r\n }, [label])\r\n useEffect(() => {\r\n draggable != undefined && markerRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n\r\n useEffect(() => {\r\n iconView != undefined && markerRef.current?.setIconView(iconView)\r\n }, [iconView])\r\n\r\n useEffect(() => {\r\n userInteractionEnabled != undefined && markerRef.current?.setUserInteraction(userInteractionEnabled)\r\n }, [userInteractionEnabled])\r\n\r\n useEffect(() => {\r\n icon != undefined && markerRef.current?.setIcon(new map4d.Icon(icon.width, icon.height, icon.url))\r\n }, [icon])\r\n\r\n useEffect(() => {\r\n props.infoWindow != undefined && markerRef.current?.setInfoWindow(props.infoWindow)\r\n }, [props.infoWindow])\r\n\r\n useEffect(() => {\r\n props.infoContents != undefined && markerRef.current?.setInfoContents(props.infoContents)\r\n }, [props.infoContents])\r\n\r\n useEffect(() => {\r\n if (props.showInfoWindow != undefined) {\r\n props.showInfoWindow ? markerRef.current?.showInfoWindow() : markerRef.current?.hideInfoWindow()\r\n }\r\n }, [props.showInfoWindow])\r\n return null\r\n}\r\nexport default MFMarker\r\n","import React, { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext, MarkerClusterContext } from '../context';\r\n\r\ninterface MarkerClusterProps extends map4d.MarkerClusterOptions {\r\n map?: map4d.Map,\r\n onCreated?: (markerCluster: map4d.MarkerClusterer) => void,\r\n children?: any\r\n}\r\n\r\nconst MFMarkerCluster = (props: MarkerClusterProps) => {\r\n const {\r\n minZoom = 0,\r\n maxZoom = 22,\r\n radius = 100,\r\n zoomOnClick,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const markerRefs = useRef<map4d.Marker[]>([])\r\n const markerClusterRef = useRef<map4d.MarkerClusterer>()\r\n\r\n const drawCluster = () => {\r\n markerClusterRef.current?.setMap(null)\r\n if (theMap) {\r\n let option = {\r\n minZoom: minZoom,\r\n maxZoom: maxZoom,\r\n radius: radius,\r\n zoomOnClick: zoomOnClick\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n markerClusterRef.current = new map4d.MarkerClusterer(markerRefs.current, option)\r\n markerClusterRef.current?.setMap(theMap)\r\n onCreated && onCreated(markerClusterRef.current)\r\n }\r\n }\r\n const clusterContext = {\r\n addMarker: (marker: map4d.Marker) => {\r\n markerRefs.current.push(marker)\r\n drawCluster()\r\n },\r\n removeMarker: (marker: map4d.Marker) => {\r\n let newMarkers = markerRefs.current.filter(t => t != marker)\r\n markerRefs.current = newMarkers\r\n drawCluster()\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !markerClusterRef.current) {\r\n drawCluster()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n markerClusterRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n markerClusterRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n markerClusterRef.current?.setMap(null)\r\n }\r\n }, [])\r\n useEffect(() => {\r\n if (theMap) {\r\n drawCluster()\r\n }\r\n }, [minZoom, maxZoom, radius])\r\n useEffect(() => {\r\n zoomOnClick != undefined && markerClusterRef.current?.setZoomOnClick(zoomOnClick)\r\n }, [zoomOnClick])\r\n\r\n return (\r\n <MarkerClusterContext.Provider value={clusterContext}>\r\n {props?.children}\r\n </MarkerClusterContext.Provider>\r\n )\r\n}\r\nexport default MFMarkerCluster\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface POIProps extends map4d.POIOptions {\r\n position: any\r\n title?: string\r\n subtitle?: string\r\n color?: string\r\n type?: string\r\n icon?: string\r\n elevation?: number\r\n zIndex?: number\r\n visible?: boolean\r\n draggable?: boolean\r\n userInteractionEnabled?: boolean\r\n map?: map4d.Map,\r\n onCreated?: (poi: map4d.POI) => void\r\n onClick?: (args: any) => void\r\n onHover?: (args: any) => void\r\n}\r\n\r\nconst MFPOI = (props: POIProps) => {\r\n const {\r\n position,\r\n title,\r\n subtitle,\r\n color,\r\n type,\r\n icon,\r\n elevation,\r\n zIndex,\r\n visible,\r\n draggable,\r\n userInteractionEnabled,\r\n map,\r\n onCreated,\r\n onClick,\r\n onHover\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const poiRef = useRef<any>()\r\n\r\n useEffect(() => {\r\n if (theMap && !poiRef.current) {\r\n let option = {\r\n position: position || { lat: 10.793113, lng: 106.720739 },\r\n title: title,\r\n subtitle: subtitle,\r\n color: color,\r\n type: type,\r\n icon: icon,\r\n elevation: elevation,\r\n zIndex: zIndex,\r\n visible: visible,\r\n draggable: draggable,\r\n userInteractionEnabled: userInteractionEnabled\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n poiRef.current = new map4d.POI(option)\r\n poiRef.current.onClick = onClick\r\n poiRef.current.onHover = onHover\r\n poiRef.current?.setMap(theMap)\r\n onCreated && onCreated(poiRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n poiRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n poiRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n poiRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n poiRef.current?.setPosition(position)\r\n }, [position])\r\n useEffect(() => {\r\n title != undefined && poiRef.current?.setTitle(title)\r\n }, [title])\r\n useEffect(() => {\r\n subtitle != undefined && poiRef.current?.setSubtitle(subtitle)\r\n }, [subtitle])\r\n useEffect(() => {\r\n color != undefined && poiRef.current?.setColor(color)\r\n }, [color])\r\n useEffect(() => {\r\n type != undefined && poiRef.current?.setType(type)\r\n }, [type])\r\n useEffect(() => {\r\n icon != undefined && poiRef.current?.setIcon(icon)\r\n }, [icon])\r\n useEffect(() => {\r\n elevation != undefined && poiRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n zIndex != undefined && poiRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n visible != undefined && poiRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n draggable != undefined && poiRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n useEffect(() => {\r\n userInteractionEnabled != undefined && poiRef.current?.setUserInteraction(userInteractionEnabled)\r\n }, [userInteractionEnabled])\r\n\r\n useEffect(() => {\r\n if (poiRef.current) {\r\n poiRef.current.onClick = onClick\r\n }\r\n }, [onClick])\r\n useEffect(() => {\r\n if (poiRef.current) {\r\n poiRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n return null\r\n}\r\nexport default MFPOI\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface POIOverlayProps extends map4d.POIOverlayOptions {\r\n map?: map4d.Map,\r\n onCreated?: (poiOverlay: map4d.POIOverlay) => void\r\n}\r\n\r\nconst MFPOIOverlay = (props: POIOverlayProps) => {\r\n const {\r\n getUrl,\r\n visible = true,\r\n parserData,\r\n prefixId,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const poiOverlayRef = useRef<map4d.POIOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n poiOverlayRef.current?.setMap(null)\r\n let option = {\r\n getUrl: getUrl || { lat: 10.793113, lng: 106.720739 },\r\n visible: visible,\r\n parserData: parserData,\r\n prefixId: prefixId\r\n } as any\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n poiOverlayRef.current = new map4d.POIOverlay(option)\r\n poiOverlayRef.current?.setMap(theMap)\r\n onCreated && onCreated(poiOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !poiOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n poiOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n poiOverlayRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n poiOverlayRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [getUrl, parserData, prefixId])\r\n return null\r\n}\r\nexport default MFPOIOverlay\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface PolygonProps {\r\n paths: any[][]\r\n fillColor?: string\r\n fillOpacity?: number\r\n visible?: boolean\r\n strokeColor?: string\r\n strokeWidth?: number\r\n draggable?: boolean\r\n zIndex?: number\r\n elevation?: number\r\n userInteractionEnabled?: boolean\r\n map?: map4d.Map,\r\n onCreated?: (polygon: map4d.Polygon) => void\r\n onHover?: (args: any) => void\r\n}\r\n\r\nconst MFPolygon = (props: PolygonProps) => {\r\n const {\r\n paths,\r\n fillColor,\r\n fillOpacity,\r\n visible = true,\r\n strokeColor,\r\n strokeWidth,\r\n draggable,\r\n elevation,\r\n zIndex,\r\n userInteractionEnabled,\r\n map,\r\n onHover,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const polygonRef = useRef<any>()\r\n const a = useRef()\r\n useEffect(() => {\r\n if (theMap && !polygonRef.current) {\r\n let option = {\r\n paths: paths,\r\n fillColor: fillColor,\r\n fillOpacity: fillOpacity,\r\n visible: visible,\r\n strokeColor: strokeColor,\r\n strokeWidth: strokeWidth,\r\n draggable: draggable,\r\n elevation: elevation,\r\n zIndex: zIndex,\r\n userInteractionEnabled: userInteractionEnabled,\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n polygonRef.current = new map4d.Polygon(option)\r\n a.current = theMap\r\n console.log(a.current)\r\n polygonRef.current?.setMap(theMap)\r\n polygonRef.current.onHover = props.onHover\r\n onCreated && onCreated(polygonRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n polygonRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n polygonRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n polygonRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (polygonRef.current) {\r\n polygonRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n\r\n useEffect(() => {\r\n if (polygonRef.current) {\r\n let c = polygonRef.current?.getMap()\r\n console.log(c == a.current)\r\n }\r\n\r\n polygonRef.current?.setPaths(paths)\r\n }, [paths])\r\n useEffect(() => {\r\n fillColor != undefined && polygonRef.current?.setFillColor(fillColor)\r\n }, [fillColor])\r\n useEffect(() => {\r\n fillOpacity != undefined && polygonRef.current?.setFillOpacity(fillOpacity)\r\n }, [fillOpacity])\r\n useEffect(() => {\r\n polygonRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n strokeColor != undefined && polygonRef.current?.setStrokeColor(strokeColor)\r\n }, [strokeColor])\r\n useEffect(() => {\r\n strokeWidth != undefined && polygonRef.current?.setStrokeWidth(strokeWidth)\r\n }, [strokeWidth])\r\n useEffect(() => {\r\n draggable != undefined && polygonRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n useEffect(() => {\r\n elevation != undefined && polygonRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n zIndex != undefined && polygonRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n userInteractionEnabled != undefined && polygonRef.current?.setUserInteraction(userInteractionEnabled)\r\n }, [userInteractionEnabled])\r\n\r\n return null\r\n}\r\nexport default MFPolygon\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface PolylineProps {\r\n path: any[]\r\n strokeWidth: number\r\n strokeColor?: string\r\n strokeOpacity?: number\r\n visible?: boolean\r\n closed?: boolean\r\n draggable?: boolean\r\n zIndex?: number\r\n elevation?: number\r\n strokePattern?: any\r\n userInteractionEnabled?: boolean\r\n map?: map4d.Map\r\n onCreated?: (polyline: map4d.Polyline) => void\r\n onHover?: (args: any) => void\r\n onClick?: (args: any) => void\r\n onMouseOut?:(args: any)=> void\r\n onMouseOver?:(args: any)=> void\r\n onMouseMove?: (args: any)=> void\r\n}\r\n\r\nconst MFPolyline = (props: PolylineProps) => {\r\n const {\r\n path,\r\n strokeWidth,\r\n strokeColor,\r\n strokeOpacity,\r\n visible = true,\r\n closed,\r\n draggable,\r\n zIndex,\r\n elevation,\r\n strokePattern,\r\n userInteractionEnabled,\r\n map,\r\n onClick,\r\n onHover,\r\n onCreated,\r\n onMouseOut,\r\n onMouseOver,\r\n onMouseMove\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const polylineRef = useRef<any>()\r\n\r\n useEffect(() => {\r\n if (theMap && !polylineRef.current) {\r\n let option = {\r\n path: path || { lat: 10.793113, lng: 106.720739 },\r\n strokeWidth: strokeWidth,\r\n strokeColor: strokeColor,\r\n strokeOpacity: strokeOpacity,\r\n visible: visible,\r\n closed: closed,\r\n draggable: draggable,\r\n zIndex: zIndex,\r\n elevation: elevation,\r\n strokePattern: strokePattern,\r\n userInteractionEnabled: userInteractionEnabled,\r\n } as any\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n polylineRef.current = new map4d.Polyline(option)\r\n polylineRef.current?.setMap(theMap)\r\n polylineRef.current.onHover = props.onHover\r\n polylineRef.current.onClick = props.onClick\r\n polylineRef.current.onMouseOut = onMouseOut\r\n polylineRef.current.onMouseOver = onMouseOver\r\n polylineRef.current.onMouseMove = onMouseMove\r\n onCreated && onCreated(polylineRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n polylineRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n polylineRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n polylineRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onMouseOut = onMouseOut\r\n }\r\n }, [onMouseOut])\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onMouseOver = onMouseOver\r\n }\r\n }, [onMouseOver])\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onMouseMove = onMouseMove\r\n }\r\n }, [onMouseMove])\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onClick = onClick\r\n }\r\n }, [onClick])\r\n\r\n useEffect(() => {\r\n polylineRef.current?.setPath(path)\r\n }, [path])\r\n useEffect(() => {\r\n strokeWidth != undefined && polylineRef.current?.setStrokeWidth(strokeWidth)\r\n }, [strokeWidth])\r\n useEffect(() => {\r\n strokeColor != undefined && polylineRef.current?.setStrokeColor(strokeColor)\r\n }, [strokeColor])\r\n useEffect(() => {\r\n strokeOpacity != undefined && polylineRef.current?.setStrokeOpacity(strokeOpacity)\r\n }, [strokeOpacity])\r\n useEffect(() => {\r\n visible != undefined && polylineRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n closed != undefined && polylineRef.current?.setClosed(closed)\r\n }, [closed])\r\n useEffect(() => {\r\n draggable != undefined && polylineRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n useEffect(() => {\r\n zIndex != undefined && polylineRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n elevation != undefined && polylineRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n strokePattern != undefined && polylineRef.current?.setStrokePattern(strokePattern)\r\n }, [strokePattern])\r\n useEffect(() => {\r\n userInteractionEnabled != undefined && polylineRef.current?.setUserInteraction(userInteractionEnabled)\r\n }, [userInteractionEnabled])\r\n\r\n return null\r\n}\r\nexport default MFPolyline\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface TileOverlayProps {\r\n getUrl: Function\r\n visible?: boolean\r\n zIndex?: number\r\n opacity?: number\r\n map?: map4d.Map,\r\n onCreated?: (tileOverlay: map4d.TileOverlay) => void\r\n}\r\n\r\nconst MFTileOverlay = (props: TileOverlayProps) => {\r\n const {\r\n getUrl,\r\n visible = true,\r\n zIndex,\r\n opacity,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const tileOverlayRef = useRef<map4d.TileOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n tileOverlayRef.current?.setMap(null)\r\n let option = {\r\n getUrl: getUrl || { lat: 10.793113, lng: 106.720739 },\r\n visible: visible,\r\n zIndex: zIndex,\r\n opacity: opacity\r\n } as any\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n tileOverlayRef.current = new map4d.TileOverlay(option)\r\n tileOverlayRef.current?.setMap(theMap)\r\n onCreated && onCreated(tileOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !tileOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n tileOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n tileOverlayRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n tileOverlayRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [getUrl])\r\n useEffect(() => {\r\n tileOverlayRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n zIndex != undefined && tileOverlayRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n opacity != undefined && tileOverlayRef.current?.setOpacity(opacity)\r\n }, [opacity])\r\n return null\r\n}\r\nexport default MFTileOverlay\r\n","/**\r\n * class vector 2\r\n */\r\nexport class Vector2 {\r\n\r\n /**\r\n * create a vector 2 class\r\n * @param x\r\n * @param y\r\n */\r\n constructor(public x: number = 0.0,\r\n public y: number = 0.0) {\r\n }\r\n\r\n clone() {\r\n return new Vector2(this.x, this.y)\r\n }\r\n\r\n /**\r\n * get the length of the vector\r\n * @returns {number}\r\n */\r\n get length(): number {\r\n return Math.sqrt(this.x * this.x + this.y * this.y)\r\n }\r\n\r\n /**\r\n * @return {number}\r\n */\r\n get lengthSq(): number {\r\n return this.x * this.x + this.y * this.y\r\n }\r\n\r\n /**\r\n * normalize the vector\r\n * @returns {Vector2}\r\n */\r\n normalize(): Vector2 {\r\n let length = this.length\r\n let x = 0.0\r\n let y = 0.0\r\n\r\n if (length > 0) {\r\n x = this.x / length\r\n y = this.y / length\r\n }\r\n\r\n return new Vector2(x, y)\r\n }\r\n\r\n /**\r\n * set value of the vector\r\n * @param a\r\n */\r\n set(a: Vector2) {\r\n this.x = a.x\r\n this.y = a.y\r\n }\r\n\r\n /**\r\n * invert the vector direction\r\n * @returns {Vector2}\r\n */\r\n invert() {\r\n return new Vector2(-this.x, -this.y)\r\n }\r\n\r\n /**\r\n * rotate 90\r\n * @returns {Vector2}\r\n */\r\n rotate90() {\r\n return new Vector2(this.y, -this.x)\r\n }\r\n\r\n /**\r\n * add to another vector\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n add(a: Vector2) {\r\n return new Vector2(a.x + this.x, a.y + this.y)\r\n }\r\n\r\n /**\r\n * subtract with another vector\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n subtract(a: Vector2) {\r\n if (!a) {\r\n return this.clone()\r\n }\r\n return new Vector2(this.x - a.x, this.y - a.y)\r\n }\r\n\r\n /**\r\n * multiply by a number\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n multiply(a: number) {\r\n return new Vector2(a * this.x, a * this.y)\r\n }\r\n\r\n /**\r\n * rotate by an angle\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n rotateBy(a: number) {\r\n let cos = Math.cos(a * Math.PI / 180)\r\n let sin = Math.sin(a * Math.PI / 180)\r\n return new Vector2(this.x * cos - this.y * sin, this.x * sin + this.y * cos)\r\n }\r\n\r\n rotateByRadian(a: number): Vector2 {\r\n let cos = Math.cos(a)\r\n let sin = Math.sin(a)\r\n return new Vector2(this.x * cos - this.y * sin, this.x * sin + this.y * cos)\r\n }\r\n\r\n /**\r\n * multiply by a vector\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n cross(a: Vector2) {\r\n return this.x * a.y - this.y * a.x\r\n }\r\n\r\n /**\r\n * dot a vector\r\n * @param a\r\n * @returns {number}\r\n */\r\n dot(a: Vector2) {\r\n return a.x * this.x + a.y * this.y\r\n }\r\n\r\n static perp(v1: number[], v2: number[]) {\r\n return new Vector2(v2[1] - v1[1],\r\n v1[0] - v2[0])\r\n }\r\n\r\n static neg(v: Vector2) {\r\n return new Vector2(-v.x, -v.y)\r\n }\r\n}\r\n","import {Vector2} from \"./Vector2\"\r\n\r\nexport class MathUtils {\r\n static clamp(value: number, min: number, max: number) {\r\n return value < min ? min : (value > max ? max : value)\r\n }\r\n\r\n static toRadians(angleDegrees: number) {\r\n return (angleDegrees * Math.PI) / 180.0\r\n }\r\n\r\n static distance(p1: Vector2, p2: Vector2): number {\r\n return Math.sqrt((p1.x - p2.x)*(p1.x - p2.x) + (p1.y - p2.y)*(p1.y - p2.y))\r\n }\r\n\r\n static findNextPowerOf2(n: number) {\r\n /** decrement `n` (to handle the case when `n` itself is a power of 2) **/\r\n n = n - 1\r\n\r\n /** calculate the position of the last set bit of `n` **/\r\n let lg = Math.log2(n)\r\n\r\n /** next power of two will have a bit set at position `lg+1`. **/\r\n return 1 << lg + 1\r\n }\r\n\r\n static findPreviousPowerOf2(n: number) {\r\n return 1 << 31 - Math.clz32(n)\r\n }\r\n}\r\n","/**\r\n * class vector 3\r\n */\r\nexport class Vector3 {\r\n\r\n /**\r\n * create a vector 3 class\r\n * @param x\r\n * @param y\r\n * @param z\r\n */\r\n constructor(public x: number = 0.0,\r\n public y: number = 0.0,\r\n public z: number = 0.0) {\r\n }\r\n\r\n clone() {\r\n return new Vector3(this.x, this.y, this.z)\r\n }\r\n\r\n buffer(): Float32Array {\r\n return new Float32Array([this.x, this.y, this.z])\r\n }\r\n\r\n /**\r\n * get the length of the vector\r\n * @returns {number}\r\n */\r\n get length(): number {\r\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z)\r\n }\r\n\r\n /**\r\n * @return {number}\r\n */\r\n get lengthSq(): number {\r\n return this.x * this.x + this.y * this.y + this.z * this.z\r\n }\r\n\r\n /**\r\n * normalize the vector\r\n * @returns {Vector3}\r\n */\r\n normalize(): Vector3 {\r\n let length = this.length\r\n let x = 0.0\r\n let y = 0.0\r\n let z = 0.0\r\n\r\n if (length > 0) {\r\n x = this.x / length\r\n y = this.y / length\r\n z = this.z / length\r\n }\r\n\r\n return new Vector3(x, y, z)\r\n }\r\n\r\n /**\r\n * set value of the vector\r\n * @param a\r\n */\r\n set(a: Vector3) {\r\n this.x = a.x\r\n this.y = a.y\r\n this.z = a.z\r\n }\r\n\r\n /**\r\n * invert the vector direction\r\n * @returns {Vector3}\r\n */\r\n invert() {\r\n return new Vector3(-this.x, -this.y, -this.z)\r\n }\r\n\r\n /**\r\n * rotate 90\r\n * @returns {Vector3}\r\n */\r\n rotate90() {\r\n return new Vector3(this.y, -this.x, this.z)\r\n }\r\n\r\n /**\r\n * add to another vector\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n add(a: Vector3) {\r\n return new Vector3(a.x + this.x, a.y + this.y, a.z + this.z)\r\n }\r\n\r\n /**\r\n * subtract with another vector\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n subtract(a: Vector3) {\r\n if (!a) {\r\n return this.clone()\r\n }\r\n return new Vector3(this.x - a.x, this.y - a.y, this.z - a.z)\r\n }\r\n\r\n /**\r\n * multiply by a number\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n multiply(a: number) {\r\n return new Vector3(a * this.x, a * this.y, a * this.z)\r\n }\r\n\r\n /**\r\n * rotate by an angle\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n rotateBy(a: number) {\r\n let cos = Math.cos(a * Math.PI / 180)\r\n let sin = Math.sin(a * Math.PI / 180)\r\n return new Vector3(this.x * cos - this.y * sin, this.x * sin + this.y * cos)\r\n }\r\n\r\n /**\r\n * multiply by a vector\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n cross(a: Vector3) {\r\n return new Vector3(\r\n this.y * a.z - this.z * a.y,\r\n this.z * a.x - this.x * a.z,\r\n this.x * a.y - this.y * a.x\r\n )\r\n }\r\n\r\n /**\r\n * dot a vector\r\n * @param a\r\n * @returns {number}\r\n */\r\n dot(a: Vector3) {\r\n return a.x * this.x + a.y * this.y + a.z * this.z\r\n }\r\n\r\n static perp(v1: number[], v2: number[]) {\r\n return new Vector3(v2[1] - v1[1],\r\n v1[0] - v2[0])\r\n }\r\n\r\n static neg(v: Vector3) {\r\n return new Vector3(-v.x, -v.y, -v.z)\r\n }\r\n}\r\n","/**\r\n * the matrix class\r\n */\r\nimport {Vector3} from \"./Vector3\"\r\n\r\nexport class Matrix4 {\r\n\r\n /**\r\n * create an eye 4x4 matrix\r\n * @param data\r\n */\r\n constructor(public data: Float32Array = new Float32Array([\r\n 1.0, 0.0, 0.0, 0.0,\r\n 0.0, 1.0, 0.0, 0.0,\r\n 0.0, 0.0, 1.0, 0.0,\r\n 0.0, 0.0, 0.0, 1.0])) {\r\n }\r\n\r\n setIdentity(x = 1.0, y = 1.0, z = 1.0) {\r\n this.data[0] = x\r\n this.data[1] = 0\r\n this.data[2] = 0\r\n this.data[3] = 0\r\n this.data[4] = 0\r\n this.data[5] = y\r\n this.data[6] = 0\r\n this.data[7] = 0\r\n this.data[8] = 0\r\n this.data[9] = 0\r\n this.data[10] = z\r\n this.data[11] = 0\r\n this.data[12] = 0\r\n this.data[13] = 0\r\n this.data[14] = 0\r\n this.data[15] = 1.0\r\n return this\r\n }\r\n\r\n copy(other: Matrix4) {\r\n this.data[0] = other.data[0]\r\n this.data[1] = other.data[1]\r\n this.data[2] = other.data[2]\r\n this.data[3] = other.data[3]\r\n this.data[4] = other.data[4]\r\n this.data[5] = other.data[5]\r\n this.data[6] = other.data[6]\r\n this.data[7] = other.data[7]\r\n this.data[8] = other.data[8]\r\n this.data[9] = other.data[9]\r\n this.data[10] = other.data[10]\r\n this.data[11] = other.data[11]\r\n this.data[12] = other.data[12]\r\n this.data[13] = other.data[13]\r\n this.data[14] = other.data[14]\r\n this.data[15] = other.data[15]\r\n return this\r\n }\r\n\r\n /**\r\n * get a translation matrix\r\n * @param x\r\n * @param y\r\n * @param z\r\n * @returns {Matrix4}\r\n */\r\n static translate(x: number, y: number, z: number = 0.0) {\r\n\r\n /// get translation matrix\r\n return new Matrix4(new Float32Array([\r\n 1.0, 0.0, 0.0, 0.0,\r\n 0.0, 1.0, 0.0, 0.,\r\n 0.0, 0.0, 1.0, 0.0,\r\n x, y, z, 1.0]))\r\n }\r\n\r\n translate(x: number, y: number, z: number = 0.0) {\r\n this.data[12] += x\r\n this.data[13] += y\r\n this.data[14] += z\r\n return this\r\n }\r\n\r\n get position() {\r\n return new Vector3(this.data[12], this.data[13], this.data[14])\r\n }\r\n\r\n /**\r\n * get a rotation matrix around x-axis\r\n * @param alpha\r\n * @returns {Matrix4}\r\n */\r\n static rotateX(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n /// get translation matrix\r\n return new Matrix4(new Float32Array([\r\n 1.0, 0.0, 0.0, 0.0,\r\n 0.0, cosA, sinA, 0.0,\r\n 0.0, -sinA, cosA, 0.0,\r\n 0.0, 0.0, 0.0, 1.0\r\n ]))\r\n }\r\n\r\n setRotationX(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n this.setIdentity()\r\n this.data[5] = cosA\r\n this.data[6] = sinA\r\n this.data[9] = -sinA\r\n this.data[10] = cosA\r\n return this\r\n }\r\n\r\n\r\n rotateX(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n let r1 = this.data[1]\r\n let r2 = this.data[2]\r\n this.data[1] = r1 * cosA - r2 * sinA\r\n this.data[2] = r1 * sinA + r2 * cosA\r\n\r\n r1 = this.data[5]\r\n r2 = this.data[6]\r\n this.data[5] = r1 * cosA - r2 * sinA\r\n this.data[6] = r1 * sinA + r2 * cosA\r\n\r\n r1 = this.data[9]\r\n r2 = this.data[10]\r\n this.data[9] = r1 * cosA - r2 * sinA\r\n this.data[10] = r1 * sinA + r2 * cosA\r\n\r\n r1 = this.data[13]\r\n r2 = this.data[14]\r\n this.data[13] = r1 * cosA - r2 * sinA\r\n this.data[14] = r1 * sinA + r2 * cosA\r\n return this\r\n }\r\n\r\n\r\n /**\r\n * get a rotation matrix around y-axis\r\n * @param alpha\r\n * @returns {Matrix4}\r\n */\r\n static rotateY(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n /// get translation matrix\r\n return new Matrix4(new Float32Array([\r\n cosA, 0.0, sinA, 0.0,\r\n 0.0, 1.0, 0.0, 0.0,\r\n -sinA, 0.0, cosA, 0.0,\r\n 0.0, 0.0, 0.0, 1.0\r\n ]))\r\n }\r\n\r\n setRotationY(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n this.setIdentity()\r\n this.data[0] = cosA\r\n this.data[2] = sinA\r\n this.data[8] = -sinA\r\n this.data[10] = cosA\r\n return this\r\n }\r\n\r\n rotateY(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n let r0 = this.data[0]\r\n let r2 = this.data[2]\r\n this.data[0] = r0 * cosA - r2 * sinA\r\n this.data[2] = r0 * sinA + r2 * cosA\r\n\r\n r0 = this.data[4]\r\n r2 = this.data[6]\r\n this.data[4] = r0 * cosA - r2 * sinA\r\n this.data[6] = r0 * sinA + r2 * cosA\r\n\r\n r0 = this.data[8]\r\n r2 = this.data[10]\r\n this.data[8] = r0 * cosA - r2 * sinA\r\n this.data[10] = r0 * sinA + r2 * cosA\r\n\r\n r0 = this.data[12]\r\n r2 = this.data[14]\r\n this.data[12] = r0 * cosA - r2 * sinA\r\n this.data[14] = r0 * sinA + r2 * cosA\r\n return this\r\n }\r\n\r\n /**\r\n * get a rotation matrix around z-axis\r\n * @param alpha\r\n * @returns {Matrix4}\r\n */\r\n static rotateZ(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n /// get translation matrix\r\n return new Matrix4(new Float32Array([\r\n cosA, sinA, 0.0, 0.0,\r\n -sinA, cosA, 0.0, 0.0,\r\n 0.0, 0.0, 1.0, 0.0,\r\n 0.0, 0.0, 0.0, 1.0\r\n ]))\r\n }\r\n\r\n setRotationZ(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n this.setIdentity()\r\n this.data[0] = cosA\r\n this.data[1] = sinA\r\n this.data[4] = -sinA\r\n this.data[5] = cosA\r\n return this\r\n }\r\n\r\n rotateZ(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n let r0 = this.data[0]\r\n let r1 = this.data[1]\r\n\r\n this.data[0] = r0 * cosA - r1 * sinA\r\n this.data[1] = r0 * sinA + r1 * cosA\r\n\r\n r0 = this.data[4]\r\n r1 = this.data[5]\r\n this.data[4] = r0 * cosA - r1 * sinA\r\n this.data[5] = r0 * sinA + r1 * cosA\r\n\r\n r0 = this.data[8]\r\n r1 = this.data[9]\r\n this.data[8] = r0 * cosA - r1 * sinA\r\n this.data[9] = r0 * sinA + r1 * cosA\r\n\r\n r0 = this.data[12]\r\n r1 = this.data[13]\r\n this.data[12] = r0 * cosA - r1 * sinA\r\n this.data[13] = r0 * sinA + r1 * cosA\r\n return this\r\n }\r\n\r\n /**\r\n * get a scale matrix\r\n * @param x\r\n * @param y\r\n * @param z\r\n * @returns {Matrix4}\r\n */\r\n // static scale(x: number, y?: number, z?: number) {\r\n // if (y == null) {\r\n // y = x\r\n // z = x\r\n // }\r\n\r\n // return new Matrix4( new Float32Array([\r\n // x, 0.0, 0.0, 0.0,\r\n // 0.0, y, 0.0, 0.0,\r\n // 0.0, 0.0, z, 0.0,\r\n // 0.0, 0.0, 0.0, 1.0\r\n // ]))\r\n // }\r\n\r\n // scale(x: number, y?: number, z?: number) {\r\n // if (y == null) {\r\n // y = x\r\n // z = x\r\n // }\r\n\r\n // let r0 = this.data[0]\r\n // let r1 = this.data[1]\r\n // let r2 = this.data[2]\r\n // this.data[0] = r0 * x\r\n // this.data[1] = r1 * y\r\n // this.data[2] = r2 * z\r\n\r\n // r0 = this.data[4]\r\n // r1 = this.data[5]\r\n // r2 = this.data[6]\r\n // this.data[4] = r0 * x\r\n // this.data[5] = r1 * y\r\n // this.data[6] = r2 * z\r\n\r\n // r0 = this.data[8]\r\n // r1 = this.data[9]\r\n // r2 = this.data[10]\r\n // this.data[8] = r0 * x\r\n // this.data[9] = r1 * y\r\n // this.data[10] = r2 * z\r\n\r\n // r0 = this.data[12]\r\n // r1 = this.data[13]\r\n // r2 = this.data[14]\r\n // this.data[12] = r0 * x\r\n // this.data[13] = r1 * y\r\n // this.data[14] = r2 * z\r\n // return this\r\n // }\r\n\r\n /**\r\n * concatenate with other transformation matrix\r\n * @param matrix\r\n * @returns {Matrix4}\r\n */\r\n multiply(matrix: Matrix4) {\r\n let result = new Matrix4(new Float32Array([\r\n 0.0, 0.0, 0.0, 0.0,\r\n 0.0, 0.0, 0.0, 0.0,\r\n 0.0, 0.0, 0.0, 0.0,\r\n 0.0, 0.0, 0.0, 0.0\r\n ]))\r\n\r\n if (matrix == null){\r\n return result\r\n }\r\n\r\n for (let i = 0; i < 4; ++i) {\r\n for (let j = 0; j < 4; ++j) {\r\n for (let k = 0; k < 4; ++k) {\r\n result.data[i * 4 + k] += this.data[i * 4 + j] * matrix.data[j * 4 + k]\r\n }\r\n }\r\n }\r\n return result\r\n }\r\n\r\n // fconcat(\r\n // data0, data1, data2, data3,\r\n // data4, data5, data6, data7,\r\n // data8, data9, data10, data11,\r\n // data12, data13, data14, data15) {\r\n // let r0 = this.data[0]\r\n // let r1 = this.data[1]\r\n // let r2 = this.data[2]\r\n // let r3 = this.data[3]\r\n // this.data[0] = r0 * data0 + r1 * data4 + r2 * data8 + r3 * data12\r\n // this.data[1] = r0 * data1 + r1 * data5 + r2 * data9 + r3 * data13\r\n // this.data[2] = r0 * data2 + r1 * data6 + r2 * data10 + r3 * data14\r\n // this.data[3] = r0 * data3 + r1 * data7 + r2 * data11 + r3 * data15\r\n\r\n // r0 = this.data[4]\r\n // r1 = this.data[5]\r\n // r2 = this.data[6]\r\n // r3 = this.data[7]\r\n // this.data[4] = r0 * data0 + r1 * data4 + r2 * data8 + r3 * data12\r\n // this.data[5] = r0 * data1 + r1 * data5 + r2 * data9 + r3 * data13\r\n // this.data[6] = r0 * data2 + r1 * data6 + r2 * data10 + r3 * data14\r\n // this.data[7] = r0 * data3 + r1 * data7 + r2 * data11 + r3 * data15\r\n\r\n // r0 = this.data[8]\r\n // r1 = this.data[9]\r\n // r2 = this.data[10]\r\n // r3 = this.data[11]\r\n // this.data[8] = r0 * data0 + r1 * data4 + r2 * data8 + r3 * data12\r\n // this.data[9] = r0 * data1 + r1 * data5 + r2 * data9 + r3 * data13\r\n // this.data[10] = r0 * data2 + r1 * data6 + r2 * data10 + r3 * data14\r\n // this.data[11] = r0 * data3 + r1 * data7 + r2 * data11 + r3 * data15\r\n\r\n // r0 = this.data[12]\r\n // r1 = this.data[13]\r\n // r2 = this.data[14]\r\n // r3 = this.data[15]\r\n // this.data[12] = r0 * data0 + r1 * data4 + r2 * data8 + r3 * data12\r\n // this.data[13] = r0 * data1 + r1 * data5 + r2 * data9 + r3 * data13\r\n // this.data[14] = r0 * data2 + r1 * data6 + r2 * data10 + r3 * data14\r\n // this.data[15] = r0 * data3 + r1 * data7 + r2 * data11 + r3 * data15\r\n // return this\r\n // }\r\n\r\n // concat(matrix: Matrix4) {\r\n // if (matrix == null){\r\n // return this\r\n // }\r\n // return this.fconcat(\r\n // matrix.data[0], matrix.data[1], matrix.data[2], matrix.data[3],\r\n // matrix.data[4], matrix.data[5], matrix.data[6], matrix.data[7],\r\n // matrix.data[8], matrix.data[9], matrix.data[10], matrix.data[11],\r\n // matrix.data[12], matrix.data[13], matrix.data[14], matrix.data[15]\r\n // )\r\n // }\r\n\r\n /**\r\n *\r\n * @param left\r\n * @param right\r\n * @param bottom\r\n * @param top\r\n * @param near\r\n * @param far\r\n * @returns {Matrix4}\r\n */\r\n static ortho(left: number, right: number,\r\n bottom: number, top: number,\r\n near: number = -100.0, far: number = 100.0) {\r\n return new Matrix4(new Float32Array([\r\n 2.0/(right - left), 0.0, 0.0, 0.0,\r\n 0.0, 2.0/(top - bottom), 0.0, 0.0,\r\n 0.0, 0.0, -2.0/(far - near), 0.0,\r\n -(left + right)/(right - left), -(top + bottom)/(top - bottom), -(near + far)/(near - far), 1.0\r\n ]))\r\n }\r\n\r\n setOrtho(left: number, right: number,\r\n bottom: number, top: number,\r\n near: number = -100.0, far: number = 100.0) {\r\n this.data[0] = 2.0/(right - left)\r\n this.data[1] = 0\r\n this.data[2] = 0\r\n this.data[3] = 0\r\n this.data[4] = 0\r\n this.data[5] = 2.0/(top - bottom)\r\n this.data[6] = 0\r\n this.data[7] = 0\r\n this.data[8] = 0\r\n this.data[9] = 0\r\n this.data[10] = -2.0/(far - near)\r\n this.data[11] = -1\r\n this.data[12] = -(left + right)/(right - left)\r\n this.data[13] = -(top + bottom)/(top - bottom)\r\n this.data[14] = -(near + far)/(near - far)\r\n this.data[15] = 1.0\r\n return this\r\n }\r\n\r\n /**\r\n * create a perspective matrix\r\n * @param fov\r\n * @param aspect\r\n * @param near\r\n * @param far\r\n * @returns {Matrix4}\r\n */\r\n static perspective(fov: number, aspect: number, near: number, far: number) {\r\n let y = Math.tan(fov / 2.0) * near\r\n let x = y * aspect\r\n return Matrix4.frustum(-x, x, -y, y, near, far)\r\n }\r\n\r\n setPerspective(fov: number, aspect: number, near: number, far: number) {\r\n let y = Math.tan(fov / 2.0) * near\r\n let x = y * aspect\r\n return this.setFrustum(-x, x, -y, y, near, far)\r\n }\r\n\r\n /**\r\n *\r\n * @param left\r\n * @param right\r\n * @param bottom\r\n * @param top\r\n * @param near\r\n * @param far\r\n * @returns {Matrix4}\r\n */\r\n static frustum(left: number, right: number,\r\n bottom: number, top: number,\r\n near: number = -100.0, far: number = 100.0) {\r\n return new Matrix4(new Float32Array([\r\n 2 * near / (right - left), 0, 0, 0,\r\n 0, 2 * near / (top - bottom), 0, 0,\r\n (right + left)/(right - left), (top + bottom) / (top - bottom), -(far + near) / (far - near), -1,\r\n 0, 0, -2 * near * far / (far - near), 0\r\n ]))\r\n }\r\n\r\n setFrustum(left: number, right: number,\r\n bottom: number, top: number,\r\n near: number = -100.0, far: number = 100.0) {\r\n this.data[0] = 2 * near / (right - left);\r\n this.data[1] = 0\r\n this.data[2] = 0\r\n this.data[3] = 0\r\n this.data[4] = 0\r\n this.data[5] = 2 * near / (top - bottom)\r\n this.data[6] = 0\r\n this.data[7] = 0\r\n this.data[8] = (right + left)/(right - left)\r\n this.data[9] = (top + bottom) / (top - bottom)\r\n this.data[10] = -(far + near) / (far - near)\r\n this.data[11] = -1\r\n this.data[12] = 0\r\n this.data[13] = 0\r\n this.data[14] = -2 * near * far / (far - near)\r\n this.data[15] = 0\r\n }\r\n\r\n /**\r\n * transform a vector\r\n * @param vector\r\n * @param w include transformation\r\n */\r\n transform(vector: Vector3, w: number = 0.0) {\r\n\r\n let x = this.data[0 * 4 + 0] * vector.x\r\n + this.data[1 * 4 + 0] * vector.y\r\n + this.data[2 * 4 + 0] * vector.z\r\n + this.data[3 * 4 + 0] * w\r\n\r\n let y = this.data[0 * 4 + 1] * vector.x\r\n + this.data[1 * 4 + 1] * vector.y\r\n + this.data[2 * 4 + 1] * vector.z\r\n + this.data[3 * 4 + 1] * w\r\n\r\n let z = this.data[0 * 4 + 2] * vector.x\r\n + this.data[1 * 4 + 2] * vector.y\r\n + this.data[2 * 4 + 2] * vector.z\r\n + this.data[3 * 4 + 2] * w\r\n\r\n w = this.data[0 * 4 + 3] * vector.x\r\n + this.data[1 * 4 + 3] * vector.y\r\n + this.data[2 * 4 + 3] * vector.z\r\n + this.data[3 * 4 + 3] * w\r\n\r\n if (w == 0) {\r\n w = 1\r\n }\r\n\r\n return new Vector3(\r\n x / w, y / w, z / w\r\n )\r\n }\r\n\r\n /**\r\n * get the matrix buffer\r\n * @returns {number[]}\r\n */\r\n buffer() {\r\n return this.data\r\n }\r\n\r\n /**\r\n * return look at matrix\r\n * @param eye\r\n * @param target\r\n * @param scale\r\n * @param up\r\n * @returns {Matrix4}\r\n */\r\n // static lookAt(eye: Vector3, target: Vector3, scale: number = 1, up = new Vector3(0, 0, 1)) {\r\n\r\n // //compute x, y, z\r\n // let zaxis = eye.subtract(target).normalize()\r\n // let xaxis = up.cross(zaxis).normalize()\r\n // let yaxis = zaxis.cross(xaxis).normalize()\r\n // let transformation = Matrix4.translate(-eye.x, -eye.y, -eye.z)\r\n // transformation.fconcat(\r\n // xaxis.x, yaxis.x, zaxis.x, 0.0,\r\n // xaxis.y, yaxis.y, zaxis.y, 0.0,\r\n // xaxis.z, yaxis.z, zaxis.z, 0.0,\r\n // 0.0, 0.0, 0.0, 1.0\r\n // )\r\n // return transformation.scale(scale)\r\n // }\r\n\r\n // lookAt(eye: Vector3, target: Vector3, scale: number = 1, up = new Vector3(0, 0, 1)) {\r\n // //compute x, y, z\r\n // let zaxis = eye.subtract(target).normalize()\r\n // let xaxis = up.cross(zaxis).normalize()\r\n // let yaxis = zaxis.cross(xaxis).normalize()\r\n // this.setIdentity()\r\n // this.translate(-eye.x, -eye.y, -eye.z)\r\n // this.fconcat(\r\n // xaxis.x, yaxis.x, zaxis.x, 0.0,\r\n // xaxis.y, yaxis.y, zaxis.y, 0.0,\r\n // xaxis.z, yaxis.z, zaxis.z, 0.0,\r\n // 0.0, 0.0, 0.0, 1.0\r\n // )\r\n // return this.scale(scale)\r\n // }\r\n\r\n inverse() {\r\n\r\n // this is a matrix of 3 x 3 or larger\r\n // calculate inverse using gauss-jordan elimination\r\n // http://en.wikipedia.org/wiki/Gaussian_elimination\r\n // http://mathworld.wolfram.com/MatrixInverse.html\r\n // http://math.uww.edu/~mcfarlat/inverse.htm\r\n\r\n // make a copy of the matrix (only the arrays, not of the elements)\r\n const rows = 4\r\n let cols = 4\r\n\r\n let A = this.data.slice()\r\n\r\n // create an identity matrix which in the end will contain the\r\n // matrix inverse\r\n let B = new Float32Array([\r\n 1.0, 0.0, 0.0, 0.0,\r\n 0.0, 1.0, 0.0, 0.0,\r\n 0.0, 0.0, 1.0, 0.0,\r\n 0.0, 0.0, 0.0, 1.0\r\n ])\r\n\r\n //eye(rows).valueOf();\r\n\r\n // loop over all columns, and perform row reductions\r\n for (let c = 0; c < cols; ++c) {\r\n\r\n // element Acc should be non zero. if not, swap content\r\n // with one of the lower rows\r\n let r = c\r\n while (r < rows && A[r * 4 + c] == 0) {\r\n ++r\r\n }\r\n if (r == rows || A[r * 4 + c] == 0) {\r\n\r\n // TODO: in case of zero det, just return a matrix wih Infinity values? (like octave)\r\n console.log(\"Cannot calculate inverse, determinant is zero\")\r\n return this\r\n }\r\n if (r != c) {\r\n let Ac = A.slice(c * rows, (c + 1) * rows)\r\n let Ar = A.slice(r * rows, (r + 1) * rows)\r\n A.set(Ar, c * rows)\r\n A.set(Ac, r * rows)\r\n let Bc = B.slice(c * rows, (c + 1) * rows)\r\n let Br = B.slice(r * rows, (r + 1) * rows)\r\n B.set(Br, c * rows)\r\n B.set(Bc, r * rows)\r\n }\r\n\r\n // eliminate non-zero values on the other rows at column c\r\n let Ac = A.slice(c * rows, (c + 1) * rows)\r\n let Bc = B.slice(c * rows, (c + 1) * rows)\r\n\r\n for (r = 0; r < rows; ++r) {\r\n let Ar = A.slice(r * rows, (r + 1) * rows)\r\n let Br = B.slice(r * rows, (r + 1) * rows)\r\n if(r != c) {\r\n\r\n // eliminate value at column c and row r\r\n if (Ar[c] != 0) {\r\n let f = -Ar[c] / Ac[c]\r\n\r\n // add (f * row c) to row r to eliminate the value\r\n // at column c\r\n for (let s = c; s < cols; ++s) {\r\n Ar[s] = Ar[s] + (f * Ac[s])\r\n }\r\n A.set(Ar, r * rows)\r\n for (let s = 0; s < cols; ++s) {\r\n Br[s] = Br[s] + (f * Bc[s])\r\n }\r\n B.set(Br, r * rows)\r\n }\r\n }\r\n else {\r\n\r\n // normalize value at Acc to 1,\r\n // divide each value on row r with the value at Acc\r\n let f = Ac[c]\r\n if (f == 0) {\r\n console.log(\"Cannot calculate inverse, determinant is zero\")\r\n return this\r\n }\r\n for (let s = c; s < cols; ++s) {\r\n Ar[s] = Ar[s] / f\r\n }\r\n A.set(Ar, r * rows)\r\n for (let s = 0; s < cols; ++s) {\r\n Br[s] = Br[s] / f\r\n }\r\n B.set(Br, r * rows)\r\n }\r\n }\r\n }\r\n return new Matrix4(B)\r\n }\r\n}\r\n","import {Vector3} from \"./Vector3\"\r\n\r\nexport class Color {\r\n private _buffer: Float32Array\r\n\r\n /**\r\n * create a color\r\n */\r\n constructor(red: number = 0.0,\r\n green: number = 0.0,\r\n blue: number = 0.0,\r\n public alpha: number = 1.0) {\r\n this._buffer = new Float32Array([red, green, blue])\r\n }\r\n\r\n /**\r\n * get the buffer\r\n */\r\n rgbBuffer(): Float32Array {\r\n return this._buffer\r\n }\r\n\r\n /**\r\n * get the buffer\r\n */\r\n buffer(): Float32Array {\r\n return new Float32Array([this.red, this.green, this.blue, this.alpha])\r\n }\r\n\r\n get red() {\r\n return this._buffer[0]\r\n }\r\n\r\n get green() {\r\n return this._buffer[1]\r\n }\r\n\r\n get blue() {\r\n return this._buffer[2]\r\n }\r\n\r\n /**\r\n * string style for canvas\r\n * @return {string}\r\n */\r\n get rgba() {\r\n return \"rgba(\" + this.red * 255 + \",\" + this.green * 255 + \",\" + this.blue * 255 + \",\" + this.alpha + \")\"\r\n }\r\n\r\n /**\r\n * create color from hex string\r\n */\r\n static fromHex(hexString = \"000000\") {\r\n if (hexString.length == 4 || hexString.length == 7 || hexString.length == 9) {\r\n hexString = hexString.substring(1, hexString.length)\r\n }\r\n if (hexString.length == 3) {\r\n hexString = hexString.split(\"\").map(x => x + x).join(\"\")\r\n }\r\n\r\n let colorCode = parseInt(hexString, 16)\r\n\r\n if (hexString.length == 6) {\r\n return new Color(\r\n (colorCode >> 16) / 255,\r\n ((colorCode >> 8) & 255) / 255,\r\n (colorCode & 255) / 255\r\n )\r\n }\r\n else {\r\n return new Color(\r\n ((colorCode >> 24) & 255) / 255,\r\n ((colorCode >> 16) & 255) / 255,\r\n ((colorCode >> 8) & 255) / 255,\r\n (colorCode & 255) / 255\r\n )\r\n }\r\n }\r\n\r\n static fromInt(colorCode = 0) {\r\n if (colorCode < 0) {\r\n colorCode = 0\r\n }\r\n return new Color(\r\n ((colorCode >> 16) & 255) / 255,\r\n ((colorCode >> 8) & 255) / 255,\r\n (colorCode & 255) / 255\r\n )\r\n }\r\n\r\n static fromVec3(color: Vector3) {\r\n return new Color(\r\n color.x,\r\n color.y,\r\n color.z\r\n )\r\n }\r\n\r\n static mix(a: Color, b: Color, factor: number) {\r\n return new Color(\r\n a.red * factor + b.red * (1 - factor),\r\n a.green* factor + b.green * (1 - factor),\r\n a.blue * factor + b.blue * (1 - factor),\r\n a.alpha * factor + b.alpha * (1 - factor)\r\n )\r\n }\r\n\r\n get code() {\r\n let float2hex = (f: number) => {\r\n let hex = Math.floor(f * 255).toString(16)\r\n hex = hex.length == 1 ? \"0\" + hex : hex\r\n hex = hex.length > 2 ? hex.substr(0, 2) : hex\r\n return hex\r\n }\r\n return \"#\" + float2hex(this.red) + float2hex(this.green) + float2hex(this.blue) + float2hex(this.alpha)\r\n }\r\n\r\n static isValid(colorString: string): boolean{\r\n return /^#?([0-9A-Fa-f]){6,8}$/i.test(colorString)\r\n }\r\n}\r\n","import { Matrix4 } from \"../engine/Matrix\"\r\nimport { Color } from \"../engine/Color\"\r\n\r\nexport class MapConstants {\r\n\r\n static none = -1.0\r\n\r\n static baseTileSize = 256\r\n\r\n static minLatitude = -85.051128779806604\r\n\r\n static maxLatitude = 85.051128779806604\r\n\r\n static maxLongitude = 180\r\n\r\n static minLongitude = -180\r\n\r\n static maxDegrees = 360\r\n\r\n static radiusEarthMeters = 6378137.0\r\n\r\n static halfEarthCircumFerenceInMeter = MapConstants.radiusEarthMeters * Math.PI\r\n\r\n static earthCircumFerenceInMeter = MapConstants.halfEarthCircumFerenceInMeter * 2\r\n\r\n static tileCacheSize = 512\r\n\r\n static baseMapLowestOrder = Number.MIN_SAFE_INTEGER\r\n\r\n static baseMapMiddleOrder = -1.0E6\r\n\r\n static buildingLayerOrder = 0\r\n\r\n static userPOILayerOrder = 1.0\r\n\r\n static pointGeoJsonWidth = 32\r\n\r\n static pointGeoJsonHeight = 32\r\n\r\n static placeSelectedIdPrefix = \"maplink-selected-place-\"\r\n\r\n static placeWidth = 26\r\n\r\n static placeHeight = 32\r\n\r\n static spritePadding = 2.\r\n\r\n static get placeFontSize() {\r\n return 12\r\n }\r\n\r\n static poiFontWeight = \"normal\"\r\n\r\n static poiMaxWidth = 120\r\n\r\n static poiNumLine = 2\r\n\r\n static poiDefaultColor = new Color(0.5, 0.6, 0.7)\r\n\r\n static pointGeoJsonAnchor = [0.5, 1.0]\r\n\r\n static infoWindowPadding = 2\r\n\r\n // pixels/s\r\n static flingMinVelocity = -10000.0\r\n\r\n // pixels/s\r\n static flingMaxVelocity = 10000.0\r\n\r\n static flingTimeConstant = 150.0\r\n\r\n static flingSpeedMultiply = 15\r\n\r\n static zoomSpeedMouseWheel = 15\r\n\r\n // milliseconds\r\n static minDurationFlyTo = 1000\r\n\r\n // milliseconds\r\n static maxDurationFlyTo = 13000\r\n\r\n static maxBearingAngle = 720\r\n\r\n static defaultMinZoom = 3\r\n\r\n static defaultMinZoom3d = 17\r\n\r\n static defaultMaxZoom = 22\r\n\r\n static defaultMaxNativeZoom = 19\r\n\r\n static geoJsonMinNativeZoom = 20\r\n\r\n static vectorBuildingsMinZoom = 17\r\n\r\n static tileExtend = 4096.0\r\n\r\n static defaultAnimationDuration = 300\r\n\r\n static defaultFlyZoom = 17.0\r\n\r\n static minTilt = 0.0\r\n\r\n static maxTilt2D = 40.0\r\n\r\n static maxTilt3D = 87.0\r\n\r\n static get maxTiltIntersectWithScreen() {\r\n return 90.0 - CameraConstants.fov * MathConstants.rad2Deg\r\n }\r\n\r\n static minTiltReduceFog = 75.0\r\n\r\n static minTimeMoving = 150.0\r\n\r\n static minTimeDoubleZoom = 500.0\r\n\r\n static minTimeSpanTo = 500.0\r\n\r\n static maxTimeSpanTo = 4000.0\r\n\r\n static skyboxMapBorderMinimum = 0.001\r\n\r\n static metersPerPixelAtLatitude = 0.0\r\n\r\n static mapBackgroundColor2D = Color.fromHex(\"#f2efe9\")\r\n\r\n static mapBackgroundColor3D = Color.fromHex(\"#e1e1e1\")\r\n\r\n static satellitePOIColor = new Color(1.0, 1.0, 1.0)\r\n\r\n static satellitePOIHalo = new Color(0.0, 0.0, 0.0)\r\n\r\n static mapBackgroundScaleRatio = 20000.0\r\n\r\n static clusterMaxPointCount = 1000000\r\n\r\n static biasMatrix = new Matrix4(new Float32Array([\r\n 0.5, 0.0, 0.0, 0.0,\r\n 0.0, 0.5, 0.0, 0.0,\r\n 0.0, 0.0, 0.5, 0.0,\r\n 0.5, 0.5, 0.5, 1.0\r\n ]))\r\n\r\n static FPS = 1000.0 / 15.0\r\n\r\n static buildingOverlayIdPrefix = \"_overlay\"\r\n\r\n static customBuildingType = \"custom_building\"\r\n\r\n static touchBoxSize = 8.0\r\n\r\n static zoomStep = 0.25\r\n\r\n static distanceRatioToForceMoveCamera = 3.0 /** ratio with screen size to force move camera when call flyTo() method **/\r\n\r\n static gridIndexExtent = 4096\r\n\r\n static gridIndexN = 4\r\n\r\n static gridIndexPadding = 0\r\n}\r\n\r\n\r\n\r\nexport class SymbolConstants {\r\n\r\n static defaultSymbol = \"markerDefault\"\r\n\r\n static geoJsonLayerId = \"geoJsonLayerId\"\r\n\r\n}\r\n\r\nexport class LayerConstants {\r\n\r\n /** Map layer */\r\n\r\n static readonly rasterLayerId = \"1.0.rasterLayer\"\r\n\r\n static readonly surfaceLayerId = \"1.1.vector.surfaces\"\r\n\r\n static readonly roadsLayerId = \"1.2.vector.roads\"\r\n\r\n static readonly boundaryLayerId = \"1.3.vector.boundaries\"\r\n\r\n static readonly labelLayerId = \"4.label.tile\"\r\n\r\n static readonly rasterOverlayLayerId = \"1.4.rasterOverlay\"\r\n\r\n static readonly imageOverlayLayerId = \"5.imageOverlay\"\r\n\r\n static readonly buildingOverlayLayerId = \"2.buildingOverlay\"\r\n\r\n static readonly pointLayerId = \"2.maplink.vector.tile.points\"\r\n\r\n static readonly pointOverlayLayerId = \"2.maplink.overlay.tile.points\"\r\n\r\n static readonly userPOILayerId = \"1.maplink.vector.tile.user.poi\"\r\n\r\n static readonly buildingLayerId = \"2.buildingLayer\"\r\n\r\n static readonly userBuildingLayerId = \"3.userBuilding.layer\"\r\n\r\n /** Tile layer */\r\n\r\n static readonly roadTileLayerId = \"roadTileLayer\"\r\n\r\n static readonly labelTileLayerId = \"labelTileLayer\"\r\n\r\n static readonly pointTileLayerId = \"pointTileLayer\"\r\n\r\n static readonly buildingTileLayerId = \"buildingTileLayer\"\r\n\r\n static readonly rasterTileLayerId = \"rasterTileLayer\"\r\n}\r\n\r\nexport class MathConstants {\r\n\r\n static rad2Deg = 180 / Math.PI\r\n\r\n static deg2Rad = Math.PI / 180.0\r\n\r\n static epsilon = 1e-6\r\n}\r\n\r\nexport class CameraConstants {\r\n\r\n static fov = 30 * MathConstants.deg2Rad\r\n\r\n static nearPlane = 0.1\r\n\r\n static farPlane = 1000\r\n\r\n static height = 15.5\r\n\r\n}\r\n\r\nexport class PolyConstants {\r\n\r\n static numTrianglesOnRoundCap = 6\r\n\r\n static numTrianglesOnRoundJoin = 5\r\n\r\n static numTrianglesPerCircle = 4\r\n}\r\n\r\nexport class ParticleConstants {\r\n\r\n static rainFrequency = 0.004\r\n\r\n static rainParticleRotation = -25\r\n\r\n static snowFrequency = 0.004\r\n\r\n}\r\n\r\nexport class WeatherConstants {\r\n\r\n static refreshTime = 60000 /** miliseconds */\r\n\r\n static refreshDistance = 10000 /** meter */\r\n\r\n}\r\n\r\nexport class ColorConstants {\r\n static skyColors = {\r\n \"Morning\": Color.fromHex(\"cdf9ff\"),\r\n \"Noon\": Color.fromHex(\"0783f4\"),\r\n \"AfterNoon\": Color.fromHex(\"243a8b\"),\r\n \"Evening\": Color.fromHex(\"182863\"),\r\n }\r\n\r\n static fogColors = {\r\n \"Morning\": Color.fromHex(\"FAD8C4\"),\r\n \"Noon\": Color.fromHex(\"FAFAFA\"),\r\n \"AfterNoon\": Color.fromHex(\"FAA899\"),\r\n \"Evening\": Color.fromHex(\"141c36\"),\r\n }\r\n\r\n static lightColors = {\r\n \"Morning\": Color.fromHex(\"#DE8989\"),\r\n \"Noon\": Color.fromHex(\"#F8F8F8\"),\r\n \"AfterNoon\": Color.fromHex(\"#BE321A\"),\r\n \"Evening\": Color.fromHex(\"#1E0032\")\r\n }\r\n\r\n static getSkyColor(name: string): Color {\r\n return ColorConstants.skyColors[name]\r\n }\r\n\r\n static getFogColor(name: string): Color {\r\n return ColorConstants.fogColors[name]\r\n }\r\n\r\n static getLightColor(name: string): Color {\r\n return ColorConstants.lightColors[name]\r\n }\r\n}\r\n\r\nexport class TimeConstants {\r\n\r\n static morningTime = 6.0\r\n\r\n static noonTime = 12.0\r\n\r\n static afterNoonTime = 16.0\r\n\r\n static eveningTime = 18.0\r\n\r\n}\r\n\r\nexport class FontConstant {\r\n\r\n static fontTextureWidth = 1000\r\n\r\n static fontTextureHeight = 400\r\n\r\n static get fontSize() {\r\n return 24\r\n }\r\n}\r\n\r\nexport class LabelConstant {\r\n /** Max angle (degree) of 2 segment on path that can create text data **/\r\n static maxCurvedTextAngle = 22\r\n}\r\n","export enum ClassType {\r\n //Annotation\r\n MARKER,\r\n CIRCLE,\r\n POLYLINE,\r\n POLYGON,\r\n POI,\r\n BUILDING,\r\n\r\n //UserLayer\r\n VECTOR_TILE_LAYER,\r\n\r\n //Query\r\n BUILDING_QUERY_RESULT,\r\n\r\n //AnnotationData\r\n POLYLINE_DATA,\r\n POLYGON_DATA,\r\n\r\n //Item\r\n ICON,\r\n LATLNG,\r\n POINT,\r\n CAMERA_POSITION,\r\n\r\n //Bounds\r\n LATLNG_BOUNDS,\r\n\r\n //Label\r\n MARKER_LABEL,\r\n\r\n //Feature\r\n FEATURE,\r\n TILE_FEATURE,\r\n VECTOR_TILE_FEATURE\r\n}\r\n\r\nexport class Map4dObject {\r\n private readonly classType: ClassType\r\n\r\n constructor(classType: ClassType) {\r\n this.classType = classType\r\n }\r\n\r\n /**\r\n * Check classType in mapObject\r\n * @param mapObject \r\n * @param classType \r\n * @returns \r\n */\r\n static isClassType(mapObject: any, classType: ClassType): boolean {\r\n let mfClassType = (mapObject || {}).classType\r\n return mfClassType == classType\r\n }\r\n}","import { ClassType, Map4dObject } from \"./Map4dObject\"\r\nimport { MapConstants, MathConstants } from './MapConstants';\r\n\r\n\r\nexport class LatLng extends Map4dObject {\r\n\r\n /** Latitude, in degrees. */\r\n lat: number\r\n\r\n /** Longitude, in degrees. */\r\n lng: number\r\n\r\n constructor(lat: number, lng: number) {\r\n super(ClassType.LATLNG)\r\n this.lat = lat\r\n this.lng = lng\r\n }\r\n\r\n /**\r\n * Comparison function.\r\n * @param other\r\n */\r\n equals(other: LatLng): boolean {\r\n return this.lat == other.lat && this.lng == other.lng\r\n }\r\n\r\n valid() {\r\n return isFinite(this.lat) && Math.abs(this.lat) <= 90\r\n //tile wrap\r\n }\r\n\r\n /**\r\n * Converts to string representation.\r\n */\r\n toString(): string {\r\n return \"(\" + this.lat + \", \" + this.lng + \")\"\r\n }\r\n\r\n static convert(input: ILatLng): LatLng {\r\n if(Map4dObject.isClassType(input, ClassType.LATLNG)) {\r\n return input as LatLng\r\n }\r\n if (Array.isArray(input) && (input.length === 2)) {\r\n return new LatLng(Number(input[1]), Number(input[0]))\r\n }\r\n if (!Array.isArray(input) && typeof input === \"object\" && input !== null && \"lat\" in input && \"lng\" in input) {\r\n return new LatLng(\r\n Number(input.lat),\r\n Number(input.lng))\r\n }\r\n throw new Error(\"`ILngLat` argument must be specified as a LngLat instance, an object \" +\r\n \"{lat: <lat>, lng: <lng>}, or an array of [<lng>, <lat>]\")\r\n }\r\n \r\n distanceTo(target: ILatLng): number {\r\n if (target == null) {\r\n return 0;\r\n }\r\n let desc = LatLng.convert(target)\r\n let latStartRadian = MathConstants.deg2Rad * this.lat\r\n let longStartRadian = MathConstants.deg2Rad * this.lng\r\n let latDescRadian = MathConstants.deg2Rad * desc.lat\r\n let longDescRadian = MathConstants.deg2Rad * desc.lng\r\n let u = Math.sin((latDescRadian - latStartRadian)/2)\r\n let v = Math.sin((longDescRadian - longStartRadian)/2)\r\n\r\n // Distance between two latLngs in meters\r\n return 2.0 * MapConstants.radiusEarthMeters *\r\n Math.asin(Math.sqrt(u * u + Math.cos(latStartRadian) * Math.cos(latDescRadian) * v * v))\r\n }\r\n\r\n normalize(): LatLng {\r\n let sign = this.lat > 0 ? -1 : 1\r\n let lat = (this.lat - sign * 90) % 180 + 90 * sign\r\n sign = this.lng > 0 ? -1 : 1\r\n let lng = (this.lng - sign * 180) % 380 + 180 * sign\r\n return new LatLng(lat, lng)\r\n }\r\n\r\n /**\r\n * add to another LatLng\r\n * @param a\r\n * @returns {LatLng}\r\n */\r\n add(a: LatLng) {\r\n return new LatLng(this.lat + a.lat, this.lng + a.lng).normalize()\r\n }\r\n\r\n /**\r\n * subtract with another LatLng\r\n * @param a\r\n * @returns {LatLng}\r\n */\r\n subtract(a: LatLng) {\r\n if (!a) {\r\n return this\r\n }\r\n return new LatLng(this.lat - a.lat, this.lng - a.lng).normalize()\r\n }\r\n}\r\n\r\nexport type ILatLng = LatLng | {lat: number, lng: number} | [number, number] | null\r\n","import {Vector2} from \"../engine/Vector2\"\r\nimport {MathUtils} from \"../engine/MathUtils\"\r\nimport { MapConstants, MathConstants } from \"../models/MapConstants\"\r\nimport { LatLng } from \"../models/LatLng\"\r\n\r\nexport class ProjectionMercator {\r\n\r\n /**\r\n * ok for test\r\n * @param latLng\r\n * @param worldSize\r\n */\r\n private static projectInternal(latLng: LatLng, worldSize: number) : Vector2 {\r\n let latitude = MathUtils.clamp(latLng.lat, MapConstants.minLatitude, MapConstants.maxLatitude)\r\n return new Vector2(\r\n MapConstants.maxLongitude + latLng.lng,\r\n MapConstants.maxLongitude - MathConstants.rad2Deg\r\n * Math.log(Math.tan(Math.PI / 4 + latitude * Math.PI / MapConstants.maxDegrees))\r\n ).multiply(worldSize / MapConstants.maxDegrees)\r\n }\r\n\r\n /**\r\n * ok for test\r\n * @param latLng\r\n */\r\n static convertToMeterFromLatLng(latLng: LatLng): Vector2 {\r\n let constrainedLatitude = MathUtils.clamp(latLng.lat, MapConstants.minLatitude, MapConstants.maxLatitude)\r\n let constrainedLongitude = latLng.lng\r\n let m = 1 - 1e-15\r\n let f = MathUtils.clamp(Math.sin(MathConstants.deg2Rad * constrainedLatitude), -m, m)\r\n let easting = MapConstants.radiusEarthMeters * constrainedLongitude * MathConstants.deg2Rad\r\n let northing = 0.5 * MapConstants.radiusEarthMeters * Math.log((1 + f) / (1 - f))\r\n return new Vector2(easting, northing)\r\n }\r\n\r\n /**\r\n * ok for test\r\n * @param meters\r\n */\r\n static convertToLatLngFromMeter(meters: Vector2): LatLng {\r\n let latitude = (2 * Math.atan(Math.exp(meters.y / MapConstants.radiusEarthMeters)) - (Math.PI / 2.0))\r\n * MathConstants.rad2Deg\r\n let longitude = meters.x * MathConstants.rad2Deg / MapConstants.radiusEarthMeters\r\n return new LatLng(latitude, longitude)\r\n }\r\n\r\n /**\r\n * ok for test\r\n * @param latLng\r\n * @param zoom\r\n */\r\n static projectZoom(latLng: LatLng, zoom: number): Vector2 {\r\n return this.projectInternal(latLng, 1 << zoom)\r\n }\r\n\r\n\r\n}\r\n","import { ProjectionMercator } from \"../map/ProjectionMercator\"\r\nimport { MathUtils } from \"../engine/MathUtils\"\r\nimport { Vector2 } from \"../engine/Vector2\"\r\nimport { ILatLng, LatLng } from \"../models/LatLng\"\r\n\r\nexport class CoordinateTransformer {\r\n\r\n private coordinates: LatLng[] = []\r\n\r\n constructor(coordinates: ILatLng[]) {\r\n this.coordinates = coordinates.map(coordinate => LatLng.convert(coordinate))\r\n }\r\n\r\n setCoordinates(coordinates: ILatLng[]): void {\r\n this.coordinates = coordinates.map(coordinate => LatLng.convert(coordinate))\r\n }\r\n\r\n addCoordinates(coordinates: ILatLng[]): void {\r\n coordinates.forEach(coordinate => this.coordinates.push(LatLng.convert(coordinate)))\r\n }\r\n\r\n rotate(degree: number, anchor: ILatLng = null): LatLng[] {\r\n if (this.coordinates.length <= 1) {\r\n return this.coordinates.slice()\r\n }\r\n let center = null\r\n if (anchor != null) {\r\n center = LatLng.convert(center)\r\n }\r\n else {\r\n center = this.center\r\n }\r\n let centerInMeters = ProjectionMercator.convertToMeterFromLatLng(center)\r\n let transformedCoordinates: LatLng[] = []\r\n let degreeInRadians = MathUtils.toRadians(degree)\r\n this.coordinates.forEach(coordinate => {\r\n let point = ProjectionMercator.convertToMeterFromLatLng(coordinate)\r\n point.x -= centerInMeters.x\r\n point.y -= centerInMeters.y\r\n\r\n let x = point.x\r\n let y = point.y\r\n point.x = (x * Math.cos(degreeInRadians) - y * Math.sin(degreeInRadians))\r\n point.y = (x * Math.sin(degreeInRadians) + y * Math.cos(degreeInRadians))\r\n\r\n transformedCoordinates.push(ProjectionMercator.convertToLatLngFromMeter(\r\n new Vector2(centerInMeters.x + point.x, centerInMeters.y + point.y)))\r\n })\r\n return transformedCoordinates\r\n }\r\n\r\n translate(target: ILatLng, anchor: ILatLng = null): LatLng[] {\r\n if (this.coordinates.length <= 0) {\r\n return []\r\n }\r\n let newCenter = LatLng.convert(target)\r\n let oldCenter = null\r\n if (anchor != null) {\r\n oldCenter = LatLng.convert(anchor)\r\n }\r\n else {\r\n oldCenter = this.center\r\n }\r\n\r\n let transformedCoordinates: LatLng[] = []\r\n let translateVectorX = newCenter.lng - oldCenter.lng\r\n let translateVectorY = newCenter.lat - oldCenter.lat\r\n this.coordinates.forEach(coordinate => {\r\n transformedCoordinates.push(new LatLng(coordinate.lat + translateVectorY,\r\n coordinate.lng + translateVectorX))\r\n })\r\n return transformedCoordinates\r\n }\r\n\r\n scale(scale: number, anchor: ILatLng = null): LatLng[] {\r\n if (this.coordinates.length <= 1) {\r\n return this.coordinates.slice()\r\n }\r\n let center = null\r\n if (anchor != null) {\r\n center = LatLng.convert(anchor)\r\n }\r\n else {\r\n center = this.center\r\n }\r\n\r\n let centerInMeters = ProjectionMercator.convertToMeterFromLatLng(center)\r\n let transformedCoordinates: LatLng[] = []\r\n this.coordinates.forEach(coordinate => {\r\n let point = ProjectionMercator.convertToMeterFromLatLng(coordinate)\r\n point.x -= centerInMeters.x\r\n point.y -= centerInMeters.y\r\n point.x *= scale\r\n point.y *= scale\r\n transformedCoordinates.push(ProjectionMercator.convertToLatLngFromMeter(\r\n new Vector2(centerInMeters.x + point.x, centerInMeters.y + point.y)))\r\n })\r\n return transformedCoordinates\r\n }\r\n\r\n get center(): LatLng {\r\n if (this.coordinates.length == 0) {\r\n return null as unknown as LatLng\r\n }\r\n let center = new LatLng(0, 0)\r\n for (let i = 0; i < this.coordinates.length; ++i) {\r\n center.lat += this.coordinates[i].lat\r\n center.lng += this.coordinates[i].lng\r\n }\r\n center.lat /= this.coordinates.length\r\n center.lng /= this.coordinates.length\r\n return center\r\n }\r\n}"],"names":["defaultCt","map","Map4dContext","createContext","markerClusterDefaultContext","addMarker","removeMarker","MarkerClusterContext","MFBuilding","props","position","name","scale","bearing","elevation","height","model","texture","coordinates","visible","draggable","userInteractionEnabled","selected","growUp","onCreated","map4dContext","useContext","theMap","buildingRef","useRef","useEffect","current","length","_buildingRef$current","option","lat","lng","Object","keys","forEach","key","undefined","map4d","Building","setMap","_buildingRef$current2","_buildingRef$current3","_buildingRef$current4","_buildingRef$current5","setPosition","_buildingRef$current6","setName","_buildingRef$current7","setScale","_buildingRef$current8","setBearing","_buildingRef$current9","setElevation","_buildingRef$current10","setHeight","_buildingRef$current11","setModel","_buildingRef$current12","setTexture","_buildingRef$current13","setCoordinates","_buildingRef$current14","setVisible","_buildingRef$current15","setDraggable","_buildingRef$current16","setUserInteraction","_buildingRef$current17","setSelected","_buildingRef$current18","setGrowUp","MFBuildingOverlay","getUrl","parserData","prefixId","buildingOverlayRef","reCreate","_buildingOverlayRef$c","BuildingOverlay","_buildingOverlayRef$c2","_buildingOverlayRef$c3","_buildingOverlayRef$c4","_buildingOverlayRef$c5","VariableTool","variable","MFCircle","center","radius","fillColor","fillOpacity","strokeColor","strokeWidth","zIndex","circleRef","_circleRef$current","Circle","_circleRef$current2","_circleRef$current3","_circleRef$current4","hasValue","_circleRef$current5","setCenter","_circleRef$current6","setRadius","_circleRef$current7","setFillColor","_circleRef$current8","setFillOpacity","_circleRef$current9","_circleRef$current10","setStrokeColor","_circleRef$current11","setStrokeWidth","_circleRef$current12","_circleRef$current13","setZIndex","_circleRef$current14","_circleRef$current15","MFDataLayer","geoJsonString","dataLayerRef","_dataLayerRef$current","feature","_theMap$data","data","remove","_theMap$data2","addGeoJson","_dataLayerRef$current2","_theMap$data3","MFDirectionsRenderer","routes","activedIndex","activeStrokeWidth","activeStrokeColor","activeOutlineWidth","activeOutlineColor","activeStrokePattern","inactiveStrokeWidth","inactiveStrokeColor","inactiveOutlineWidth","inactiveOutlineColor","inactiveStrokePattern","originMarkerOptions","destinationMarkerOptions","waypointMarkerOptions","onMarkerDragEnd","onHover","onMouseOut","onMouseOver","onMouseMove","directionRef","_directionRef$current","DirectionsRenderer","_directionRef$current2","_directionRef$current3","_directionRef$current4","_directionRef$current5","_directionRef$current6","setRoutes","_directionRef$current7","setActivedIndex","_directionRef$current8","setActiveStrokePattern","_directionRef$current9","setInactiveStrokePattern","_directionRef$current10","setOptions","MFGroundOverlay","bounds","override","opacity","groundOverlayRef","_groundOverlayRef$cur","TileOverlay","_groundOverlayRef$cur2","_groundOverlayRef$cur3","_groundOverlayRef$cur4","_groundOverlayRef$cur5","_groundOverlayRef$cur6","_groundOverlayRef$cur7","_groundOverlayRef$cur8","setOpacity","MFImageOverlay","url","imageOverlayRef","_imageOverlayRef$curr","ImageOverlay","_imageOverlayRef$curr2","_imageOverlayRef$curr3","_imageOverlayRef$curr4","_imageOverlayRef$curr5","_imageOverlayRef$curr6","_imageOverlayRef$curr7","addLibrary","id","scriptId","exist","document","getElementById","script","createElement","src","defer","body","appendChild","createId","dt","Date","getTime","uuid","replace","c","r","Math","random","floor","toString","MFMap","callback","mapDomRef","mapRef","scriptElement","events","_useState","useState","createCallback","window","options","Map","onMapReady","registerEvent","domain","environment","sdkDomain","urlNew","version","accessKey","mapid","destroy","_events$current","t","_mapRef$current","_props$options","mapType","_mapRef$current2","setMapType","_props$options2","_props$options3","_props$options4","_mapRef$current3","_props$options5","_mapRef$current4","camera","getCamera","setTarget","moveCamera","_props$options6","_mapRef$current5","_props$options7","_props$options8","eventClickMarker","_mapRef$current6","addListener","args","_args$marker","marker","onClick","_args$marker2","eventRightClickMarker","_mapRef$current7","_args$marker3","onRightClick","_args$marker4","eventDragEndMarker","_mapRef$current8","_args$marker5","onDragEnd","_args$marker6","eventHoverMarker","_mapRef$current9","_args$marker7","_args$marker8","eventHoverPolygon","_mapRef$current10","_args$polygon","polygon","_args$polygon2","eventHoverPolyline","_mapRef$current11","_args$polyline","polyline","_args$polyline2","eventHoverDirection","_mapRef$current12","_args$renderer","renderer","_args$renderer2","directions","eventClickPolyline","_mapRef$current13","_args$polyline3","_args$polyline4","eventMouseOutDirection","_mapRef$current14","_args$renderer3","_args$renderer4","eventMouseOverDirection","_mapRef$current15","_args$renderer5","_args$renderer6","eventMouseMoveDirection","_mapRef$current16","_args$renderer7","_args$renderer8","eventMouseOutPolyline","_mapRef$current17","_args$polyline5","_args$polyline6","eventMouseOverPolyline","_mapRef$current18","_args$polyline7","_args$polyline8","eventMouseMovePolyline","_mapRef$current19","_args$polyline9","_args$polyline10","eventMouseOutMarker","_mapRef$current20","_args$marker9","_args$marker10","eventMouseOverMarker","_mapRef$current21","_args$marker11","_args$marker12","eventMouseMoveMarker","_mapRef$current22","_args$marker13","_args$marker14","eventClickPoi","_mapRef$current23","_args$poi","poi","_args$poi2","eventHoverPoi","_mapRef$current24","_args$poi3","_args$poi4","concat","onClickLocation","_mapRef$current25","location","push","onRightClickLocation","_mapRef$current26","onTilesLoaded","_mapRef$current27","onCameraChanging","_mapRef$current28","newContext","React","Fragment","style","width","display","ref","Provider","value","children","MFMarker","_props$visible","anchor","labelAnchor","icon","rotation","title","snippet","windowAnchor","label","iconView","markerClusterContext","markerRef","iconT","Icon","Marker","infoWindow","setInfoWindow","infoContents","setInfoContents","showInfoWindow","_markerRef$current","_markerRef$current2","hideInfoWindow","_markerRef$current3","_markerRef$current4","_markerRef$current5","_markerRef$current6","_markerRef$current7","_markerRef$current8","setAnchor","_markerRef$current9","setLabelAnchor","_markerRef$current10","setIcon","_markerRef$current11","_markerRef$current12","setRotation","_markerRef$current13","setTitle","_markerRef$current14","setSnippet","_markerRef$current15","setWindowAnchor","_markerRef$current16","_markerRef$current17","setLabel","_markerRef$current18","_markerRef$current19","setIconView","_markerRef$current20","_markerRef$current21","_markerRef$current22","_markerRef$current23","_markerRef$current24","_markerRef$current25","MFMarkerCluster","_props$minZoom","minZoom","_props$maxZoom","maxZoom","_props$radius","zoomOnClick","markerRefs","markerClusterRef","drawCluster","_markerClusterRef$cur","_markerClusterRef$cur2","MarkerClusterer","clusterContext","newMarkers","filter","_markerClusterRef$cur3","_markerClusterRef$cur4","_markerClusterRef$cur5","_markerClusterRef$cur6","setZoomOnClick","MFPOI","subtitle","color","type","poiRef","_poiRef$current","POI","_poiRef$current2","_poiRef$current3","_poiRef$current4","_poiRef$current5","_poiRef$current6","_poiRef$current7","setSubtitle","_poiRef$current8","setColor","_poiRef$current9","setType","_poiRef$current10","_poiRef$current11","_poiRef$current12","_poiRef$current13","_poiRef$current14","_poiRef$current15","MFPOIOverlay","poiOverlayRef","_poiOverlayRef$curren","POIOverlay","_poiOverlayRef$curren2","_poiOverlayRef$curren3","_poiOverlayRef$curren4","_poiOverlayRef$curren5","MFPolygon","paths","polygonRef","a","_polygonRef$current","Polygon","console","log","_polygonRef$current2","_polygonRef$current3","_polygonRef$current4","_polygonRef$current5","getMap","_polygonRef$current6","setPaths","_polygonRef$current7","_polygonRef$current8","_polygonRef$current9","_polygonRef$current10","_polygonRef$current11","_polygonRef$current12","_polygonRef$current13","_polygonRef$current14","_polygonRef$current15","MFPolyline","path","strokeOpacity","closed","strokePattern","polylineRef","_polylineRef$current","Polyline","_polylineRef$current2","_polylineRef$current3","_polylineRef$current4","_polylineRef$current5","setPath","_polylineRef$current6","_polylineRef$current7","_polylineRef$current8","setStrokeOpacity","_polylineRef$current9","_polylineRef$current10","setClosed","_polylineRef$current11","_polylineRef$current12","_polylineRef$current13","_polylineRef$current14","setStrokePattern","_polylineRef$current15","MFTileOverlay","tileOverlayRef","_tileOverlayRef$curre","_tileOverlayRef$curre2","_tileOverlayRef$curre3","_tileOverlayRef$curre4","_tileOverlayRef$curre5","_tileOverlayRef$curre6","_tileOverlayRef$curre7","_tileOverlayRef$curre8","Vector2","x","y","_proto","prototype","clone","normalize","set","invert","rotate90","add","subtract","multiply","rotateBy","cos","PI","sin","rotateByRadian","cross","dot","perp","v1","v2","neg","v","_createClass","get","sqrt","MathUtils","clamp","min","max","toRadians","angleDegrees","distance","p1","p2","findNextPowerOf2","n","lg","log2","findPreviousPowerOf2","clz32","Vector3","z","buffer","Float32Array","Matrix4","setIdentity","copy","other","translate","rotateX","alpha","sinA","cosA","setRotationX","r1","r2","rotateY","setRotationY","r0","rotateZ","setRotationZ","matrix","result","i","j","k","ortho","left","right","bottom","top","near","far","setOrtho","perspective","fov","aspect","tan","frustum","setPerspective","setFrustum","transform","vector","w","inverse","rows","cols","A","slice","B","Ac","Ar","Bc","Br","f","s","Color","red","green","blue","_buffer","rgbBuffer","fromHex","hexString","substring","split","join","colorCode","parseInt","fromInt","fromVec3","mix","b","factor","isValid","colorString","test","float2hex","hex","substr","MapConstants","CameraConstants","MathConstants","rad2Deg","radiusEarthMeters","halfEarthCircumFerenceInMeter","Number","MIN_SAFE_INTEGER","deg2Rad","ColorConstants","getSkyColor","skyColors","getFogColor","fogColors","getLightColor","lightColors","ClassType","Map4dObject","classType","isClassType","mapObject","mfClassType","LatLng","_Map4dObject","_inheritsLoose","_this","call","LATLNG","equals","valid","isFinite","abs","convert","input","Array","isArray","Error","distanceTo","target","desc","latStartRadian","longStartRadian","latDescRadian","longDescRadian","u","asin","sign","ProjectionMercator","projectInternal","latLng","worldSize","latitude","minLatitude","maxLatitude","maxLongitude","maxDegrees","convertToMeterFromLatLng","constrainedLatitude","constrainedLongitude","m","easting","northing","convertToLatLngFromMeter","meters","atan","exp","longitude","projectZoom","zoom","CoordinateTransformer","coordinate","addCoordinates","rotate","degree","centerInMeters","transformedCoordinates","degreeInRadians","point","newCenter","oldCenter","translateVectorX","translateVectorY"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.modern.js","sources":["../src/context/Map4dContext.ts","../src/context/MarkerClusterContext.ts","../src/components/MFBuilding.tsx","../src/components/MFBuildingOverlay.tsx","../src/tool/variableTool.ts","../src/components/MFCircle.tsx","../src/components/MFDataLayer.tsx","../src/components/MFDirectionsRenderer.tsx","../src/components/MFGroundOverlay.tsx","../src/components/MFImageOverlay.tsx","../src/components/MFMap.tsx","../src/components/MFMarker.tsx","../src/components/MFMarkerCluster.tsx","../src/components/MFPOI.tsx","../src/components/MFPOIOverlay.tsx","../src/components/MFPolygon.tsx","../src/components/MFPolyline.tsx","../src/components/MFTileOverlay.tsx","../src/engine/Vector2.ts","../src/engine/MathUtils.ts","../src/engine/Vector3.ts","../src/engine/Matrix.ts","../src/engine/Color.ts","../src/models/MapConstants.ts","../src/models/Map4dObject.ts","../src/models/LatLng.ts","../src/map/ProjectionMercator.ts","../src/ultils/CoordinateTransformer.ts"],"sourcesContent":["import { createContext } from 'react';\r\n\r\nexport const defaultCt = {\r\n map: null as any,\r\n}\r\nexport const Map4dContext = createContext(defaultCt)","import { createContext } from 'react';\r\n\r\nexport const markerClusterDefaultContext = {\r\n addMarker: null as unknown as (marker: map4d.Marker)=>void,\r\n removeMarker: null as unknown as (marker: map4d.Marker)=>void,\r\n}\r\nexport const MarkerClusterContext = createContext(markerClusterDefaultContext)","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface BuildingProps {\r\n position?: map4d.ILatLng\r\n name?: string\r\n scale?: number\r\n bearing?: number\r\n elevation?: number\r\n height?: number\r\n model?: string\r\n texture?: string\r\n coordinates?: map4d.ILatLng[]\r\n zIndex?: number\r\n visible?: boolean\r\n draggable?: boolean\r\n userInteractionEnabled?: boolean\r\n selected?: boolean\r\n growUp?: boolean\r\n map?: map4d.Map\r\n onCreated?: (building: map4d.Building) => void\r\n}\r\nconst MFBuilding = (props: BuildingProps) => {\r\n const {\r\n position,\r\n name,\r\n scale,\r\n bearing,\r\n elevation,\r\n height,\r\n model,\r\n texture,\r\n coordinates,\r\n visible,\r\n draggable,\r\n userInteractionEnabled,\r\n selected,\r\n growUp,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const buildingRef = useRef(null as unknown as map4d.Building)\r\n\r\n useEffect(() => {\r\n if (theMap && !buildingRef.current && ((coordinates && coordinates?.length > 0) || model)) {\r\n let option = {\r\n position: position || { lat: 10.793113, lng: 106.720739 },\r\n name: name,\r\n scale: scale,\r\n bearing: bearing,\r\n elevation: elevation,\r\n height: height,\r\n model: model,\r\n texture: texture,\r\n coordinates: coordinates,\r\n visible: visible,\r\n draggable: draggable,\r\n userInteractionEnabled: userInteractionEnabled,\r\n selected: selected,\r\n growUp: growUp\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n buildingRef.current = new map4d.Building(option)\r\n buildingRef.current?.setMap(theMap)\r\n onCreated && onCreated(buildingRef.current)\r\n }\r\n }, [theMap, position, coordinates, model])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n buildingRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n buildingRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n buildingRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n buildingRef.current?.setPosition(position as map4d.ILatLng)\r\n }, [position])\r\n useEffect(() => {\r\n name != undefined && buildingRef.current?.setName(name)\r\n }, [name])\r\n useEffect(() => {\r\n scale != undefined && buildingRef.current?.setScale(scale)\r\n }, [scale])\r\n useEffect(() => {\r\n if (bearing != undefined) {\r\n buildingRef.current?.setBearing(bearing)\r\n }\r\n }, [bearing])\r\n useEffect(() => {\r\n elevation != undefined && buildingRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n height != undefined && buildingRef.current?.setHeight(height)\r\n }, [height])\r\n useEffect(() => {\r\n model != undefined && buildingRef.current?.setModel(model)\r\n }, [model])\r\n useEffect(() => {\r\n texture != undefined && buildingRef.current?.setTexture(texture)\r\n }, [texture])\r\n useEffect(() => {\r\n coordinates != undefined && buildingRef.current?.setCoordinates(coordinates)\r\n }, [coordinates])\r\n useEffect(() => {\r\n visible != undefined && buildingRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n draggable != undefined && buildingRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n useEffect(() => {\r\n userInteractionEnabled != undefined && buildingRef.current?.setUserInteraction(userInteractionEnabled)\r\n }, [userInteractionEnabled])\r\n useEffect(() => {\r\n selected != undefined && buildingRef.current?.setSelected(selected)\r\n }, [selected])\r\n useEffect(() => {\r\n growUp != undefined && buildingRef.current?.setGrowUp(growUp)\r\n }, [growUp])\r\n return null\r\n}\r\nexport default MFBuilding\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface BuildingOverlayProps {\r\n getUrl: (x: number, y: number, zoom: number) => any\r\n parserData: (response: any) => any\r\n prefixId?: string\r\n visible?: boolean\r\n map?: map4d.Map\r\n onCreated?: (buildingOverlay: map4d.BuildingOverlay) => void\r\n}\r\nconst MFBuildingOverlay = (props: BuildingOverlayProps) => {\r\n const {\r\n getUrl,\r\n visible,\r\n parserData,\r\n prefixId,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const buildingOverlayRef = useRef<map4d.BuildingOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n buildingOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n let option = {\r\n getUrl: getUrl || { lat: 10.793113, lng: 106.720739 },\r\n visible: visible,\r\n parserData: parserData,\r\n prefixId: prefixId\r\n } as any\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n buildingOverlayRef.current = new map4d.BuildingOverlay(option)\r\n buildingOverlayRef.current?.setMap(theMap as map4d.Map)\r\n onCreated && onCreated(buildingOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !buildingOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n buildingOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n buildingOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n buildingOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [getUrl, parserData, prefixId, visible])\r\n return null\r\n}\r\nexport default MFBuildingOverlay\r\n","export class VariableTool {\r\n static hasValue = (variable: any) => {\r\n if (variable != undefined && variable != null) {\r\n return true\r\n }\r\n return false\r\n }\r\n}","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\nimport { VariableTool } from '../tool';\r\n\r\ninterface CircleProps {\r\n center: map4d.ILatLng\r\n radius: number\r\n fillColor?: string\r\n fillOpacity?: number\r\n visible?: boolean\r\n strokeColor?: string\r\n strokeWidth?: number\r\n draggable?: boolean\r\n zIndex?: number\r\n elevation?: number\r\n userInteractionEnabled?: boolean\r\n map?: map4d.Map\r\n onCreated?: (circle: map4d.Circle) => void\r\n}\r\n\r\nconst MFCircle = (props: CircleProps) => {\r\n const {\r\n center,\r\n radius,\r\n fillColor,\r\n fillOpacity,\r\n visible,\r\n strokeColor,\r\n strokeWidth,\r\n draggable,\r\n zIndex,\r\n elevation,\r\n userInteractionEnabled,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const circleRef = useRef<map4d.Circle>()\r\n\r\n useEffect(() => {\r\n if (theMap && !circleRef.current) {\r\n let option = {\r\n center: center || { lat: 10.793113, lng: 106.720739 },\r\n radius: radius,\r\n fillColor: fillColor,\r\n fillOpacity: fillOpacity,\r\n visible: visible,\r\n strokeColor: strokeColor,\r\n strokeWidth: strokeWidth,\r\n draggable: draggable,\r\n zIndex: zIndex,\r\n elevation: elevation,\r\n userInteractionEnabled: userInteractionEnabled,\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n circleRef.current = new map4d.Circle(option)\r\n circleRef.current?.setMap(theMap)\r\n onCreated && onCreated(circleRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n circleRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n circleRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n circleRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (VariableTool.hasValue(center)) {\r\n circleRef.current?.setCenter(center)\r\n }\r\n\r\n }, [center])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(radius)) {\r\n circleRef.current?.setRadius(radius as number)\r\n }\r\n }, [radius])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(fillColor)) {\r\n circleRef.current?.setFillColor(fillColor as string)\r\n }\r\n }, [fillColor])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(fillOpacity)) {\r\n circleRef.current?.setFillOpacity(fillOpacity as number)\r\n }\r\n }, [fillOpacity])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(visible)) {\r\n circleRef.current?.setVisible(visible as boolean)\r\n }\r\n }, [visible])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(strokeColor)) {\r\n circleRef.current?.setStrokeColor(strokeColor as string)\r\n }\r\n }, [strokeColor])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(strokeWidth)) {\r\n circleRef.current?.setStrokeWidth(strokeWidth as number)\r\n }\r\n }, [strokeWidth])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(draggable)) {\r\n circleRef.current?.setDraggable(draggable as boolean)\r\n }\r\n }, [draggable])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(zIndex)) {\r\n circleRef.current?.setZIndex(zIndex as number)\r\n }\r\n }, [zIndex])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(elevation)) {\r\n circleRef.current?.setElevation(elevation as number)\r\n }\r\n }, [elevation])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(userInteractionEnabled)) {\r\n circleRef.current?.setUserInteraction(userInteractionEnabled as boolean)\r\n }\r\n }, [userInteractionEnabled])\r\n\r\n return null\r\n}\r\n\r\nexport default MFCircle\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface DataLayerProps {\r\n geoJsonString: string\r\n map?: map4d.Map\r\n onCreated?: (dataLeyer?: map4d.Data.Feature[]) => void\r\n}\r\n\r\nconst MFDataLayer = (props: DataLayerProps) => {\r\n const {\r\n geoJsonString,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const dataLayerRef = useRef<map4d.Data.Feature[]>()\r\n\r\n\r\n const reCreate = () => {\r\n dataLayerRef.current?.forEach((feature) => {\r\n theMap?.data?.remove(feature)\r\n })\r\n dataLayerRef.current = theMap?.data?.addGeoJson(geoJsonString)\r\n onCreated && onCreated(dataLayerRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n return () => {\r\n dataLayerRef.current?.forEach((feature) => {\r\n theMap?.data?.remove(feature)\r\n })\r\n }\r\n }, [])\r\n return null\r\n}\r\nexport default MFDataLayer\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface DirectionsRendererProps {\r\n routes?: string | object | map4d.RouteOptions | map4d.ILatLng[][]\r\n\r\n /**\r\n * @deprecated The `directions` prop is no longer support, which is subject to removal in a future versions. Use\r\n * the `routes` prop instead.\r\n */\r\n directions?: string\r\n activedIndex?: number\r\n\r\n activeStrokeWidth?: number\r\n activeStrokeColor?: string\r\n activeOutlineWidth?: number\r\n activeOutlineColor?: string\r\n activeStrokePattern?: map4d.PatternItem\r\n\r\n inactiveStrokeWidth?: number\r\n inactiveStrokeColor?: string\r\n inactiveOutlineWidth?: number\r\n inactiveOutlineColor?: string\r\n inactiveStrokePattern?: map4d.PatternItem\r\n\r\n originMarkerOptions?: map4d.MarkerOptions\r\n destinationMarkerOptions?: map4d.MarkerOptions\r\n waypointMarkerOptions?: map4d.MarkerOptions[]\r\n\r\n onMarkerDragEnd?: Function,\r\n\r\n map?: map4d.Map,\r\n onCreated?: (directionsRenderer?: map4d.DirectionsRenderer) => void\r\n onHover?: (args: any) => void\r\n onMouseOut?: (args: any) => void\r\n onMouseOver?: (args: any) => void\r\n onMouseMove?: (args: any) => void\r\n}\r\n\r\nconst MFDirectionsRenderer = (props: DirectionsRendererProps) => {\r\n const {\r\n routes,\r\n activedIndex,\r\n activeStrokeWidth,\r\n activeStrokeColor,\r\n activeOutlineWidth,\r\n activeOutlineColor,\r\n activeStrokePattern,\r\n inactiveStrokeWidth,\r\n inactiveStrokeColor,\r\n inactiveOutlineWidth,\r\n inactiveOutlineColor,\r\n inactiveStrokePattern,\r\n originMarkerOptions,\r\n destinationMarkerOptions,\r\n waypointMarkerOptions,\r\n onMarkerDragEnd,\r\n map,\r\n onHover,\r\n onCreated,\r\n onMouseOut,\r\n onMouseOver,\r\n onMouseMove\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const directionRef = useRef<any>()\r\n\r\n useEffect(() => {\r\n if (theMap && !directionRef.current) {\r\n let option = {\r\n routes,\r\n activedIndex,\r\n activeStrokeWidth,\r\n activeStrokeColor,\r\n activeOutlineWidth,\r\n activeOutlineColor,\r\n activeStrokePattern,\r\n inactiveStrokeWidth,\r\n inactiveStrokeColor,\r\n inactiveOutlineWidth,\r\n inactiveOutlineColor,\r\n inactiveStrokePattern,\r\n originMarkerOptions,\r\n destinationMarkerOptions,\r\n waypointMarkerOptions,\r\n onMarkerDragEnd\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n directionRef.current = new map4d.DirectionsRenderer(option)\r\n directionRef.current?.setMap(theMap)\r\n directionRef.current.onHover = props.onHover\r\n directionRef.current.onMouseOut = onMouseOut\r\n directionRef.current.onMouseOver = onMouseOver\r\n directionRef.current.onMouseMove = onMouseMove\r\n onCreated && onCreated(directionRef.current)\r\n }\r\n return () => {\r\n directionRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (directionRef.current) {\r\n directionRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n\r\n useEffect(() => {\r\n if (directionRef.current) {\r\n directionRef.current.onMouseOut = onMouseOut\r\n }\r\n }, [onMouseOut])\r\n\r\n useEffect(() => {\r\n if (directionRef.current) {\r\n directionRef.current.onMouseOver = onMouseOver\r\n }\r\n }, [onMouseOver])\r\n\r\n useEffect(() => {\r\n if (directionRef.current) {\r\n directionRef.current.onMouseMove = onMouseMove\r\n }\r\n }, [onMouseMove])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n directionRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n directionRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n directionRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n routes != undefined && directionRef.current?.setRoutes(routes)\r\n }, [routes])\r\n useEffect(() => {\r\n activedIndex != undefined && directionRef.current?.setActivedIndex(activedIndex)\r\n }, [activedIndex])\r\n useEffect(() => {\r\n activeStrokePattern != undefined && directionRef.current?.setActiveStrokePattern(activeStrokePattern)\r\n }, [activeStrokePattern])\r\n useEffect(() => {\r\n inactiveStrokePattern != undefined && directionRef.current?.setInactiveStrokePattern(inactiveStrokePattern)\r\n }, [inactiveStrokePattern])\r\n useEffect(() => {\r\n let option = {\r\n routes,\r\n activedIndex,\r\n activeStrokeWidth,\r\n activeStrokeColor,\r\n activeOutlineWidth,\r\n activeOutlineColor,\r\n activeStrokePattern,\r\n inactiveStrokeWidth,\r\n inactiveStrokeColor,\r\n inactiveOutlineWidth,\r\n inactiveOutlineColor,\r\n inactiveStrokePattern,\r\n originMarkerOptions,\r\n destinationMarkerOptions,\r\n waypointMarkerOptions,\r\n onMarkerDragEnd\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n directionRef.current?.setOptions(option)\r\n },\r\n [\r\n activeStrokeWidth,\r\n activeStrokeColor,\r\n activeOutlineWidth,\r\n activeOutlineColor,\r\n inactiveStrokeColor,\r\n inactiveOutlineWidth,\r\n inactiveOutlineColor,\r\n originMarkerOptions,\r\n destinationMarkerOptions,\r\n waypointMarkerOptions,\r\n onMarkerDragEnd\r\n ]\r\n )\r\n\r\n\r\n return null\r\n}\r\nexport default MFDirectionsRenderer\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface GroundOverlayProps extends map4d.GroundOverlayOptions {\r\n map?: map4d.Map\r\n onCreated?: (groundOverlay: map4d.GroundOverlay) => void\r\n}\r\n\r\nconst MFGroundOverlay = (props: GroundOverlayProps) => {\r\n const {\r\n bounds,\r\n getUrl,\r\n override,\r\n visible,\r\n zIndex,\r\n opacity,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const groundOverlayRef = useRef<map4d.GroundOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n groundOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n let option = {\r\n bounds,\r\n getUrl: getUrl,\r\n override,\r\n visible: visible,\r\n zIndex: zIndex,\r\n opacity: opacity\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n groundOverlayRef.current = new map4d.TileOverlay(option)\r\n groundOverlayRef.current?.setMap(theMap as map4d.Map)\r\n onCreated && onCreated(groundOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !groundOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n groundOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n groundOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n groundOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [bounds, getUrl, override])\r\n useEffect(() => {\r\n visible != undefined && groundOverlayRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n zIndex != undefined && groundOverlayRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n opacity != undefined && groundOverlayRef.current?.setOpacity(opacity)\r\n }, [opacity])\r\n return null\r\n}\r\nexport default MFGroundOverlay\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface ImageOverlayProps extends map4d.ImageOverlayOptions {\r\n map?: map4d.Map,\r\n onCreated?: (imageOverlay: map4d.ImageOverlay) => void\r\n}\r\n\r\nconst MFImageOverlay = (props: ImageOverlayProps) => {\r\n const {\r\n url,\r\n bounds,\r\n visible,\r\n zIndex,\r\n opacity,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const imageOverlayRef = useRef<map4d.ImageOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n imageOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n let option = {\r\n url,\r\n bounds: bounds,\r\n visible: visible,\r\n zIndex: zIndex,\r\n opacity: opacity\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n imageOverlayRef.current = new map4d.ImageOverlay(option)\r\n imageOverlayRef.current?.setMap(theMap as map4d.Map)\r\n onCreated && onCreated(imageOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !imageOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n imageOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n imageOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n imageOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [url, bounds, zIndex])\r\n useEffect(() => {\r\n visible != undefined && imageOverlayRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n opacity != undefined && imageOverlayRef.current?.setOpacity(opacity)\r\n }, [opacity])\r\n return null\r\n}\r\nexport default MFImageOverlay\r\n","import React, { Fragment, useEffect, useRef, useState } from 'react';\r\nimport { Map4dContext } from '../context';\r\nimport { MapEventEnum } from '../enum';\r\n\r\nexport function addLibrary(url: string, id: string) {\r\n let scriptId = `script_${id}`\r\n let exist = document.getElementById(scriptId)\r\n if (exist) {\r\n return null\r\n }\r\n const script = document.createElement('script')\r\n script.src = url;\r\n script.defer = true;\r\n script.id = scriptId\r\n document.body.appendChild(script)\r\n return script\r\n}\r\n\r\nconst createId = () => {\r\n var dt = new Date().getTime();\r\n var uuid = 'xxxxxxxx_xxxx_4xxx_yxxx_xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = (dt + Math.random() * 16) % 16 | 0;\r\n dt = Math.floor(dt / 16);\r\n return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n return uuid;\r\n}\r\ninterface MapOptions {\r\n center?: any\r\n zoom?: number\r\n minZoom?: number\r\n maxZoom?: number\r\n maxNativeZoom?: number\r\n geolocate?: boolean\r\n tilt?: number\r\n bearing?: number\r\n controls?: boolean\r\n mapType?: any\r\n controlOptions?: any\r\n restrictionBounds?: any\r\n shouldChangeMapMode?: Function\r\n cooperativeGestures?: boolean\r\n}\r\ninterface MapProps {\r\n mapid?: string\r\n options: MapOptions,\r\n version: string\r\n accessKey: string,\r\n environment?: \"dev\" | \"test\" | undefined | null,\r\n sdkDomain?: string | null\r\n onMapReady?: (map: any, key?: string) => void\r\n onClickLocation?: (args: any) => void\r\n onRightClickLocation?: (args: any) => void\r\n onCameraChanging?: (args: any) => void\r\n onTilesLoaded?: (args: any) => void\r\n children?: any\r\n}\r\n\r\nconst MFMap = (props: MapProps) => {\r\n\r\n const callback = useRef(`callback`)\r\n const mapDomRef = useRef<any>()\r\n const mapRef = useRef<map4d.Map>()\r\n const scriptElement = useRef<HTMLScriptElement>()\r\n const url = useRef<string>()\r\n const events = useRef<any[]>([])\r\n\r\n const [map, setMap] = useState<map4d.Map>()\r\n\r\n\r\n useEffect(() => {\r\n const id = createId()\r\n callback.current = `callback_${id}`\r\n const createCallback = () => {\r\n window[callback.current] = () => {\r\n let options = props.options\r\n mapRef.current = new window.map4d.Map(mapDomRef.current, options)\r\n if (props.onMapReady) {\r\n props.onMapReady(mapRef.current, id)\r\n }\r\n registerEvent()\r\n setMap(mapRef.current)\r\n }\r\n }\r\n let domain = `https://api${props.environment ? \"-\" + props.environment : \"\"}.map4d.vn`\r\n if (props.sdkDomain) {\r\n domain = props.sdkDomain\r\n }\r\n let urlNew = `${domain}/sdk/map/js?version=${props.version}&key=${props.accessKey}&callback=${callback.current}`\r\n if (props.mapid) {\r\n urlNew += `&mapId=${props.mapid}`\r\n }\r\n createCallback()\r\n let script = addLibrary(urlNew, id)\r\n if (script) {\r\n scriptElement.current = script\r\n }\r\n url.current = urlNew\r\n return () => {\r\n const destroy = () => {\r\n delete window[callback.current]\r\n if (scriptElement.current != null) {\r\n scriptElement.current.remove()\r\n }\r\n events.current?.forEach((t: any) => {\r\n t?.remove()\r\n })\r\n mapRef.current?.destroy()\r\n url.current = undefined\r\n }\r\n destroy()\r\n }\r\n }, [props.environment, props.version, props.accessKey])\r\n\r\n useEffect(() => {\r\n props.options?.mapType != undefined && mapRef.current?.setMapType(props.options?.mapType)\r\n }, [props.options?.mapType])\r\n\r\n useEffect(() => {\r\n if (props.options?.center != undefined) {\r\n let camera = mapRef.current?.getCamera()\r\n camera?.setTarget(props.options?.center)\r\n mapRef.current?.moveCamera(camera)\r\n }\r\n props.options?.mapType != undefined && mapRef.current?.setMapType(props.options?.mapType)\r\n }, [props.options?.center])\r\n\r\n const registerEvent = () => {\r\n let eventClickMarker = mapRef.current?.addListener(MapEventEnum.click, (args: any) => {\r\n args.marker?.onClick && args.marker?.onClick(args)\r\n }, {\r\n marker: true\r\n })\r\n let eventRightClickMarker = mapRef.current?.addListener(MapEventEnum.rightClick, (args: any) => {\r\n args.marker?.onRightClick && args.marker?.onRightClick(args)\r\n }, {\r\n marker: true\r\n })\r\n let eventDragEndMarker = mapRef.current?.addListener(MapEventEnum.dragEnd, (args: any) => {\r\n args.marker?.onDragEnd && args.marker?.onDragEnd(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventHoverMarker = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.marker?.onHover && args.marker?.onHover(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventHoverPolygon = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.polygon?.onHover && args.polygon?.onHover(args)\r\n }, {\r\n polygon: true\r\n })\r\n\r\n let eventHoverPolyline = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.polyline?.onHover && args.polyline?.onHover(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventHoverDirection = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.renderer?.onHover && args.renderer?.onHover(args)\r\n }, {\r\n directions: true\r\n })\r\n\r\n let eventClickPolyline = mapRef.current?.addListener(MapEventEnum.click, (args: any) => {\r\n args.polyline?.onClick && args.polyline?.onClick(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventMouseOutDirection = mapRef.current?.addListener(MapEventEnum.mouseOut, (args: any) => {\r\n args.renderer?.onMouseOut && args.renderer?.onMouseOut(args)\r\n }, {\r\n directions: true\r\n })\r\n\r\n let eventMouseOverDirection = mapRef.current?.addListener(MapEventEnum.mouseOver, (args: any) => {\r\n args.renderer?.onMouseOver && args.renderer?.onMouseOver(args)\r\n }, {\r\n directions: true\r\n })\r\n\r\n let eventMouseMoveDirection = mapRef.current?.addListener(MapEventEnum.mouseMove, (args: any) => {\r\n args.renderer?.onMouseMove && args.renderer?.onMouseMove(args)\r\n }, {\r\n directions: true\r\n })\r\n\r\n let eventMouseOutPolyline = mapRef.current?.addListener(MapEventEnum.mouseOut, (args: any) => {\r\n args.polyline?.onMouseOut && args.polyline?.onMouseOut(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventMouseOverPolyline = mapRef.current?.addListener(MapEventEnum.mouseOver, (args: any) => {\r\n args.polyline?.onMouseOver && args.polyline?.onMouseOver(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventMouseMovePolyline = mapRef.current?.addListener(MapEventEnum.mouseMove, (args: any) => {\r\n args.polyline?.onMouseMove && args.polyline?.onMouseMove(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventMouseOutMarker = mapRef.current?.addListener(MapEventEnum.mouseOut, (args: any) => {\r\n args.marker?.onMouseOut && args.marker?.onMouseOut(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventMouseOverMarker = mapRef.current?.addListener(MapEventEnum.mouseOver, (args: any) => {\r\n args.marker?.onMouseOver && args.marker?.onMouseOver(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventMouseMoveMarker = mapRef.current?.addListener(MapEventEnum.mouseMove, (args: any) => {\r\n args.marker?.onMouseMove && args.marker?.onMouseMove(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventClickPoi = mapRef.current?.addListener(MapEventEnum.click, (args: any) => {\r\n args.poi?.onClick && args.poi?.onClick(args)\r\n }, {\r\n poi: true\r\n })\r\n\r\n let eventHoverPoi = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.poi?.onHover && args.poi?.onHover(args)\r\n }, {\r\n poi: true\r\n })\r\n\r\n events.current = events.current.concat([\r\n eventClickMarker,\r\n eventRightClickMarker,\r\n eventDragEndMarker,\r\n eventHoverMarker,\r\n eventHoverPolygon,\r\n eventHoverPolyline,\r\n eventHoverDirection,\r\n eventClickPolyline,\r\n eventMouseOutDirection,\r\n eventMouseOverDirection,\r\n eventMouseMoveDirection,\r\n eventMouseOutPolyline,\r\n eventMouseOverPolyline,\r\n eventMouseMovePolyline,\r\n eventMouseOutMarker,\r\n eventMouseOverMarker,\r\n eventMouseMoveMarker,\r\n eventClickPoi,\r\n eventHoverPoi\r\n ])\r\n if (props.onClickLocation) {\r\n let onClickLocation = mapRef.current?.addListener(MapEventEnum.click, (args: any) => {\r\n props.onClickLocation && props.onClickLocation(args)\r\n }, {\r\n location: true\r\n })\r\n events.current.push(onClickLocation)\r\n }\r\n if (props.onRightClickLocation) {\r\n let onRightClickLocation = mapRef.current?.addListener(MapEventEnum.rightClick, (args: any) => {\r\n props.onRightClickLocation && props.onRightClickLocation(args)\r\n }, {\r\n location: true\r\n })\r\n events.current.push(onRightClickLocation)\r\n }\r\n if (props.onTilesLoaded) {\r\n let onTilesLoaded = mapRef.current?.addListener(MapEventEnum.tilesLoaded, (args: any) => {\r\n props.onTilesLoaded && props.onTilesLoaded(args)\r\n }, {\r\n location: true\r\n })\r\n events.current.push(onTilesLoaded)\r\n }\r\n if (props.onCameraChanging) {\r\n let onCameraChanging = mapRef.current?.addListener(MapEventEnum.cameraChanging, (args: any) => {\r\n props.onCameraChanging && props.onCameraChanging(args)\r\n }, {\r\n location: true\r\n })\r\n events.current.push(onCameraChanging)\r\n }\r\n }\r\n let newContext = {\r\n map: map\r\n }\r\n return (\r\n <Fragment>\r\n <div\r\n style={{ width: '100%', height: '100%', display: 'block' }}\r\n ref={mapDomRef}\r\n >\r\n </div>\r\n <Map4dContext.Provider value={newContext}>\r\n\r\n {\r\n props.children\r\n }\r\n </Map4dContext.Provider>\r\n </Fragment>\r\n\r\n );\r\n}\r\n\r\nexport default MFMap;\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext, MarkerClusterContext } from '../context';\r\n\r\ninterface IconProps {\r\n width: number,\r\n height: number,\r\n url: string\r\n}\r\ninterface MarkerProps {\r\n position: any\r\n visible?: boolean\r\n anchor?: any\r\n labelAnchor?: any\r\n icon?: IconProps\r\n elevation?: number\r\n rotation?: number\r\n title?: string\r\n snippet?: string\r\n windowAnchor?: any\r\n zIndex?: number\r\n label?: any\r\n draggable?: boolean\r\n iconView?: string | Node\r\n userInteractionEnabled?: boolean\r\n map?: any,\r\n infoWindow?: string | Node\r\n infoContents?: string | Node\r\n showInfoWindow?: boolean\r\n onClick?: (args: any) => void\r\n onCreated?: (marker: any) => void\r\n onRightClick?: (args: any) => void\r\n onDragEnd?: (args: any) => void\r\n onHover?: (args: any) => void\r\n onMouseOut?:(args: any)=> void\r\n onMouseOver?:(args: any)=> void\r\n onMouseMove?: (args: any)=> void\r\n}\r\n\r\nconst MFMarker = (props: MarkerProps) => {\r\n const {\r\n position,\r\n visible = true,\r\n anchor,\r\n labelAnchor,\r\n icon,\r\n elevation,\r\n rotation,\r\n title,\r\n snippet,\r\n windowAnchor,\r\n zIndex,\r\n label,\r\n draggable,\r\n iconView,\r\n userInteractionEnabled,\r\n map,\r\n onCreated,\r\n onClick,\r\n onRightClick,\r\n onDragEnd,\r\n onHover,\r\n onMouseOut,\r\n onMouseOver,\r\n onMouseMove\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const markerClusterContext = useContext(MarkerClusterContext)\r\n\r\n const theMap = map || map4dContext.map\r\n const markerRef = useRef<any>()\r\n\r\n useEffect(() => {\r\n if (theMap && !markerRef.current) {\r\n let option = {\r\n position: position || { lat: 10.793113, lng: 106.720739 },\r\n visible: visible,\r\n anchor: anchor,\r\n labelAnchor: labelAnchor,\r\n elevation: elevation,\r\n rotation: rotation,\r\n title: title,\r\n snippet: snippet,\r\n windowAnchor: windowAnchor,\r\n zIndex: zIndex,\r\n label: label,\r\n draggable: draggable,\r\n iconView: iconView,\r\n userInteractionEnabled: userInteractionEnabled\r\n } as map4d.MarkerOptions\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n if (icon) {\r\n let iconT = new map4d.Icon(icon.width, icon.height, icon.url)\r\n option.icon = iconT\r\n }\r\n markerRef.current = new map4d.Marker(option)\r\n if (props.infoWindow != undefined) {\r\n markerRef.current.setInfoWindow(props.infoWindow)\r\n }\r\n if (props.infoContents != undefined) {\r\n markerRef.current.setInfoContents(props.infoContents)\r\n }\r\n if (!markerClusterContext?.addMarker) {\r\n markerRef.current.setMap(theMap)\r\n }\r\n if (props.showInfoWindow != undefined) {\r\n props.showInfoWindow ? markerRef.current?.showInfoWindow() : markerRef.current?.hideInfoWindow()\r\n }\r\n markerRef.current.onClick = onClick\r\n markerRef.current.onRightClick = props.onRightClick\r\n markerRef.current.onDragEnd = props.onDragEnd\r\n markerRef.current.onHover = props.onHover\r\n markerRef.current.onMouseOut = onMouseOut\r\n markerRef.current.onMouseOver = onMouseOver\r\n markerRef.current.onMouseMove = onMouseMove\r\n onCreated && onCreated(markerRef.current)\r\n markerClusterContext?.addMarker && markerClusterContext?.addMarker(markerRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n if (!markerClusterContext?.addMarker) {\r\n markerRef.current?.setMap(theMap)\r\n }\r\n }\r\n return () => {\r\n if (!markerClusterContext?.addMarker) {\r\n markerRef.current?.setMap(null)\r\n }\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n if (!markerClusterContext?.addMarker) {\r\n markerRef.current?.setMap(null)\r\n }\r\n markerRef.current && markerClusterContext?.removeMarker && markerClusterContext?.removeMarker(markerRef.current)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onMouseOut = onMouseOut\r\n }\r\n }, [onMouseOut])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onMouseOver = onMouseOver\r\n }\r\n }, [onMouseOver])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onMouseMove = onMouseMove\r\n }\r\n }, [onMouseMove])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onClick = onClick\r\n }\r\n }, [onClick])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onRightClick = onRightClick\r\n }\r\n }, [onRightClick])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onHover = onDragEnd\r\n }\r\n }, [onDragEnd])\r\n\r\n useEffect(() => {\r\n markerRef.current?.setPosition(position)\r\n }, [position])\r\n useEffect(() => {\r\n markerRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n anchor != undefined && markerRef.current?.setAnchor(anchor)\r\n }, [anchor])\r\n useEffect(() => {\r\n labelAnchor != undefined && markerRef.current?.setLabelAnchor(labelAnchor)\r\n }, [labelAnchor])\r\n useEffect(() => {\r\n icon != undefined && markerRef.current?.setIcon(icon)\r\n }, [icon])\r\n useEffect(() => {\r\n elevation != undefined && markerRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n rotation != undefined && markerRef.current?.setRotation(rotation)\r\n }, [rotation])\r\n useEffect(() => {\r\n title != undefined && markerRef.current?.setTitle(title)\r\n }, [title])\r\n useEffect(() => {\r\n snippet != undefined && markerRef.current?.setSnippet(snippet)\r\n }, [snippet])\r\n useEffect(() => {\r\n windowAnchor != undefined && markerRef.current?.setWindowAnchor(windowAnchor)\r\n }, [windowAnchor])\r\n useEffect(() => {\r\n zIndex != undefined && markerRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n label != undefined && markerRef.current?.setLabel(label)\r\n }, [label])\r\n useEffect(() => {\r\n draggable != undefined && markerRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n\r\n useEffect(() => {\r\n iconView != undefined && markerRef.current?.setIconView(iconView)\r\n }, [iconView])\r\n\r\n useEffect(() => {\r\n userInteractionEnabled != undefined && markerRef.current?.setUserInteraction(userInteractionEnabled)\r\n }, [userInteractionEnabled])\r\n\r\n useEffect(() => {\r\n icon != undefined && markerRef.current?.setIcon(new map4d.Icon(icon.width, icon.height, icon.url))\r\n }, [icon])\r\n\r\n useEffect(() => {\r\n props.infoWindow != undefined && markerRef.current?.setInfoWindow(props.infoWindow)\r\n }, [props.infoWindow])\r\n\r\n useEffect(() => {\r\n props.infoContents != undefined && markerRef.current?.setInfoContents(props.infoContents)\r\n }, [props.infoContents])\r\n\r\n useEffect(() => {\r\n if (props.showInfoWindow != undefined) {\r\n props.showInfoWindow ? markerRef.current?.showInfoWindow() : markerRef.current?.hideInfoWindow()\r\n }\r\n }, [props.showInfoWindow])\r\n return null\r\n}\r\nexport default MFMarker\r\n","import React, { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext, MarkerClusterContext } from '../context';\r\n\r\ninterface MarkerClusterProps extends map4d.MarkerClusterOptions {\r\n map?: map4d.Map,\r\n onCreated?: (markerCluster: map4d.MarkerClusterer) => void,\r\n children?: any\r\n}\r\n\r\nconst MFMarkerCluster = (props: MarkerClusterProps) => {\r\n const {\r\n minZoom = 0,\r\n maxZoom = 22,\r\n radius = 100,\r\n zoomOnClick,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const markerRefs = useRef<map4d.Marker[]>([])\r\n const markerClusterRef = useRef<map4d.MarkerClusterer>()\r\n\r\n const drawCluster = () => {\r\n markerClusterRef.current?.setMap(null)\r\n if (theMap) {\r\n let option = {\r\n minZoom: minZoom,\r\n maxZoom: maxZoom,\r\n radius: radius,\r\n zoomOnClick: zoomOnClick\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n markerClusterRef.current = new map4d.MarkerClusterer(markerRefs.current, option)\r\n markerClusterRef.current?.setMap(theMap)\r\n onCreated && onCreated(markerClusterRef.current)\r\n }\r\n }\r\n const clusterContext = {\r\n addMarker: (marker: map4d.Marker) => {\r\n markerRefs.current.push(marker)\r\n drawCluster()\r\n },\r\n removeMarker: (marker: map4d.Marker) => {\r\n let newMarkers = markerRefs.current.filter(t => t != marker)\r\n markerRefs.current = newMarkers\r\n drawCluster()\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !markerClusterRef.current) {\r\n drawCluster()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n markerClusterRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n markerClusterRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n markerClusterRef.current?.setMap(null)\r\n }\r\n }, [])\r\n useEffect(() => {\r\n if (theMap) {\r\n drawCluster()\r\n }\r\n }, [minZoom, maxZoom, radius])\r\n useEffect(() => {\r\n zoomOnClick != undefined && markerClusterRef.current?.setZoomOnClick(zoomOnClick)\r\n }, [zoomOnClick])\r\n\r\n return (\r\n <MarkerClusterContext.Provider value={clusterContext}>\r\n {props?.children}\r\n </MarkerClusterContext.Provider>\r\n )\r\n}\r\nexport default MFMarkerCluster\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface POIProps extends map4d.POIOptions {\r\n position: any\r\n title?: string\r\n subtitle?: string\r\n color?: string\r\n type?: string\r\n icon?: string\r\n elevation?: number\r\n zIndex?: number\r\n visible?: boolean\r\n draggable?: boolean\r\n userInteractionEnabled?: boolean\r\n map?: map4d.Map,\r\n onCreated?: (poi: map4d.POI) => void\r\n onClick?: (args: any) => void\r\n onHover?: (args: any) => void\r\n}\r\n\r\nconst MFPOI = (props: POIProps) => {\r\n const {\r\n position,\r\n title,\r\n subtitle,\r\n color,\r\n type,\r\n icon,\r\n elevation,\r\n zIndex,\r\n visible,\r\n draggable,\r\n userInteractionEnabled,\r\n map,\r\n onCreated,\r\n onClick,\r\n onHover\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const poiRef = useRef<any>()\r\n\r\n useEffect(() => {\r\n if (theMap && !poiRef.current) {\r\n let option = {\r\n position: position || { lat: 10.793113, lng: 106.720739 },\r\n title: title,\r\n subtitle: subtitle,\r\n color: color,\r\n type: type,\r\n icon: icon,\r\n elevation: elevation,\r\n zIndex: zIndex,\r\n visible: visible,\r\n draggable: draggable,\r\n userInteractionEnabled: userInteractionEnabled\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n poiRef.current = new map4d.POI(option)\r\n poiRef.current.onClick = onClick\r\n poiRef.current.onHover = onHover\r\n poiRef.current?.setMap(theMap)\r\n onCreated && onCreated(poiRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n poiRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n poiRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n poiRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n poiRef.current?.setPosition(position)\r\n }, [position])\r\n useEffect(() => {\r\n title != undefined && poiRef.current?.setTitle(title)\r\n }, [title])\r\n useEffect(() => {\r\n subtitle != undefined && poiRef.current?.setSubtitle(subtitle)\r\n }, [subtitle])\r\n useEffect(() => {\r\n color != undefined && poiRef.current?.setColor(color)\r\n }, [color])\r\n useEffect(() => {\r\n type != undefined && poiRef.current?.setType(type)\r\n }, [type])\r\n useEffect(() => {\r\n icon != undefined && poiRef.current?.setIcon(icon)\r\n }, [icon])\r\n useEffect(() => {\r\n elevation != undefined && poiRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n zIndex != undefined && poiRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n visible != undefined && poiRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n draggable != undefined && poiRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n useEffect(() => {\r\n userInteractionEnabled != undefined && poiRef.current?.setUserInteraction(userInteractionEnabled)\r\n }, [userInteractionEnabled])\r\n\r\n useEffect(() => {\r\n if (poiRef.current) {\r\n poiRef.current.onClick = onClick\r\n }\r\n }, [onClick])\r\n useEffect(() => {\r\n if (poiRef.current) {\r\n poiRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n return null\r\n}\r\nexport default MFPOI\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface POIOverlayProps extends map4d.POIOverlayOptions {\r\n map?: map4d.Map,\r\n onCreated?: (poiOverlay: map4d.POIOverlay) => void\r\n}\r\n\r\nconst MFPOIOverlay = (props: POIOverlayProps) => {\r\n const {\r\n getUrl,\r\n visible = true,\r\n parserData,\r\n prefixId,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const poiOverlayRef = useRef<map4d.POIOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n poiOverlayRef.current?.setMap(null)\r\n let option = {\r\n getUrl: getUrl || { lat: 10.793113, lng: 106.720739 },\r\n visible: visible,\r\n parserData: parserData,\r\n prefixId: prefixId\r\n } as any\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n poiOverlayRef.current = new map4d.POIOverlay(option)\r\n poiOverlayRef.current?.setMap(theMap)\r\n onCreated && onCreated(poiOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !poiOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n poiOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n poiOverlayRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n poiOverlayRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [getUrl, parserData, prefixId])\r\n return null\r\n}\r\nexport default MFPOIOverlay\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface PolygonProps {\r\n paths: any[][]\r\n fillColor?: string\r\n fillOpacity?: number\r\n visible?: boolean\r\n strokeColor?: string\r\n strokeWidth?: number\r\n draggable?: boolean\r\n zIndex?: number\r\n elevation?: number\r\n userInteractionEnabled?: boolean\r\n map?: map4d.Map,\r\n onCreated?: (polygon: map4d.Polygon) => void\r\n onHover?: (args: any) => void\r\n}\r\n\r\nconst MFPolygon = (props: PolygonProps) => {\r\n const {\r\n paths,\r\n fillColor,\r\n fillOpacity,\r\n visible = true,\r\n strokeColor,\r\n strokeWidth,\r\n draggable,\r\n elevation,\r\n zIndex,\r\n userInteractionEnabled,\r\n map,\r\n onHover,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const polygonRef = useRef<any>()\r\n const a = useRef()\r\n useEffect(() => {\r\n if (theMap && !polygonRef.current) {\r\n let option = {\r\n paths: paths,\r\n fillColor: fillColor,\r\n fillOpacity: fillOpacity,\r\n visible: visible,\r\n strokeColor: strokeColor,\r\n strokeWidth: strokeWidth,\r\n draggable: draggable,\r\n elevation: elevation,\r\n zIndex: zIndex,\r\n userInteractionEnabled: userInteractionEnabled,\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n polygonRef.current = new map4d.Polygon(option)\r\n a.current = theMap\r\n console.log(a.current)\r\n polygonRef.current?.setMap(theMap)\r\n polygonRef.current.onHover = props.onHover\r\n onCreated && onCreated(polygonRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n polygonRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n polygonRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n polygonRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (polygonRef.current) {\r\n polygonRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n\r\n useEffect(() => {\r\n if (polygonRef.current) {\r\n let c = polygonRef.current?.getMap()\r\n console.log(c == a.current)\r\n }\r\n\r\n polygonRef.current?.setPaths(paths)\r\n }, [paths])\r\n useEffect(() => {\r\n fillColor != undefined && polygonRef.current?.setFillColor(fillColor)\r\n }, [fillColor])\r\n useEffect(() => {\r\n fillOpacity != undefined && polygonRef.current?.setFillOpacity(fillOpacity)\r\n }, [fillOpacity])\r\n useEffect(() => {\r\n polygonRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n strokeColor != undefined && polygonRef.current?.setStrokeColor(strokeColor)\r\n }, [strokeColor])\r\n useEffect(() => {\r\n strokeWidth != undefined && polygonRef.current?.setStrokeWidth(strokeWidth)\r\n }, [strokeWidth])\r\n useEffect(() => {\r\n draggable != undefined && polygonRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n useEffect(() => {\r\n elevation != undefined && polygonRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n zIndex != undefined && polygonRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n userInteractionEnabled != undefined && polygonRef.current?.setUserInteraction(userInteractionEnabled)\r\n }, [userInteractionEnabled])\r\n\r\n return null\r\n}\r\nexport default MFPolygon\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface PolylineProps {\r\n path: any[]\r\n strokeWidth: number\r\n strokeColor?: string\r\n strokeOpacity?: number\r\n visible?: boolean\r\n closed?: boolean\r\n draggable?: boolean\r\n zIndex?: number\r\n elevation?: number\r\n strokePattern?: any\r\n userInteractionEnabled?: boolean\r\n map?: map4d.Map\r\n onCreated?: (polyline: map4d.Polyline) => void\r\n onHover?: (args: any) => void\r\n onClick?: (args: any) => void\r\n onMouseOut?:(args: any)=> void\r\n onMouseOver?:(args: any)=> void\r\n onMouseMove?: (args: any)=> void\r\n}\r\n\r\nconst MFPolyline = (props: PolylineProps) => {\r\n const {\r\n path,\r\n strokeWidth,\r\n strokeColor,\r\n strokeOpacity,\r\n visible = true,\r\n closed,\r\n draggable,\r\n zIndex,\r\n elevation,\r\n strokePattern,\r\n userInteractionEnabled,\r\n map,\r\n onClick,\r\n onHover,\r\n onCreated,\r\n onMouseOut,\r\n onMouseOver,\r\n onMouseMove\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const polylineRef = useRef<any>()\r\n\r\n useEffect(() => {\r\n if (theMap && !polylineRef.current) {\r\n let option = {\r\n path: path || { lat: 10.793113, lng: 106.720739 },\r\n strokeWidth: strokeWidth,\r\n strokeColor: strokeColor,\r\n strokeOpacity: strokeOpacity,\r\n visible: visible,\r\n closed: closed,\r\n draggable: draggable,\r\n zIndex: zIndex,\r\n elevation: elevation,\r\n strokePattern: strokePattern,\r\n userInteractionEnabled: userInteractionEnabled,\r\n } as any\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n polylineRef.current = new map4d.Polyline(option)\r\n polylineRef.current?.setMap(theMap)\r\n polylineRef.current.onHover = props.onHover\r\n polylineRef.current.onClick = props.onClick\r\n polylineRef.current.onMouseOut = onMouseOut\r\n polylineRef.current.onMouseOver = onMouseOver\r\n polylineRef.current.onMouseMove = onMouseMove\r\n onCreated && onCreated(polylineRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n polylineRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n polylineRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n polylineRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onMouseOut = onMouseOut\r\n }\r\n }, [onMouseOut])\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onMouseOver = onMouseOver\r\n }\r\n }, [onMouseOver])\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onMouseMove = onMouseMove\r\n }\r\n }, [onMouseMove])\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onClick = onClick\r\n }\r\n }, [onClick])\r\n\r\n useEffect(() => {\r\n polylineRef.current?.setPath(path)\r\n }, [path])\r\n useEffect(() => {\r\n strokeWidth != undefined && polylineRef.current?.setStrokeWidth(strokeWidth)\r\n }, [strokeWidth])\r\n useEffect(() => {\r\n strokeColor != undefined && polylineRef.current?.setStrokeColor(strokeColor)\r\n }, [strokeColor])\r\n useEffect(() => {\r\n strokeOpacity != undefined && polylineRef.current?.setStrokeOpacity(strokeOpacity)\r\n }, [strokeOpacity])\r\n useEffect(() => {\r\n visible != undefined && polylineRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n closed != undefined && polylineRef.current?.setClosed(closed)\r\n }, [closed])\r\n useEffect(() => {\r\n draggable != undefined && polylineRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n useEffect(() => {\r\n zIndex != undefined && polylineRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n elevation != undefined && polylineRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n strokePattern != undefined && polylineRef.current?.setStrokePattern(strokePattern)\r\n }, [strokePattern])\r\n useEffect(() => {\r\n userInteractionEnabled != undefined && polylineRef.current?.setUserInteraction(userInteractionEnabled)\r\n }, [userInteractionEnabled])\r\n\r\n return null\r\n}\r\nexport default MFPolyline\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface TileOverlayProps {\r\n getUrl: Function\r\n visible?: boolean\r\n zIndex?: number\r\n opacity?: number\r\n map?: map4d.Map,\r\n onCreated?: (tileOverlay: map4d.TileOverlay) => void\r\n}\r\n\r\nconst MFTileOverlay = (props: TileOverlayProps) => {\r\n const {\r\n getUrl,\r\n visible = true,\r\n zIndex,\r\n opacity,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const tileOverlayRef = useRef<map4d.TileOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n tileOverlayRef.current?.setMap(null)\r\n let option = {\r\n getUrl: getUrl || { lat: 10.793113, lng: 106.720739 },\r\n visible: visible,\r\n zIndex: zIndex,\r\n opacity: opacity\r\n } as any\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n tileOverlayRef.current = new map4d.TileOverlay(option)\r\n tileOverlayRef.current?.setMap(theMap)\r\n onCreated && onCreated(tileOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !tileOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n tileOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n tileOverlayRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n tileOverlayRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [getUrl])\r\n useEffect(() => {\r\n tileOverlayRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n zIndex != undefined && tileOverlayRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n opacity != undefined && tileOverlayRef.current?.setOpacity(opacity)\r\n }, [opacity])\r\n return null\r\n}\r\nexport default MFTileOverlay\r\n","/**\r\n * class vector 2\r\n */\r\nexport class Vector2 {\r\n\r\n /**\r\n * create a vector 2 class\r\n * @param x\r\n * @param y\r\n */\r\n constructor(public x: number = 0.0,\r\n public y: number = 0.0) {\r\n }\r\n\r\n clone() {\r\n return new Vector2(this.x, this.y)\r\n }\r\n\r\n /**\r\n * get the length of the vector\r\n * @returns {number}\r\n */\r\n get length(): number {\r\n return Math.sqrt(this.x * this.x + this.y * this.y)\r\n }\r\n\r\n /**\r\n * @return {number}\r\n */\r\n get lengthSq(): number {\r\n return this.x * this.x + this.y * this.y\r\n }\r\n\r\n /**\r\n * normalize the vector\r\n * @returns {Vector2}\r\n */\r\n normalize(): Vector2 {\r\n let length = this.length\r\n let x = 0.0\r\n let y = 0.0\r\n\r\n if (length > 0) {\r\n x = this.x / length\r\n y = this.y / length\r\n }\r\n\r\n return new Vector2(x, y)\r\n }\r\n\r\n /**\r\n * set value of the vector\r\n * @param a\r\n */\r\n set(a: Vector2) {\r\n this.x = a.x\r\n this.y = a.y\r\n }\r\n\r\n /**\r\n * invert the vector direction\r\n * @returns {Vector2}\r\n */\r\n invert() {\r\n return new Vector2(-this.x, -this.y)\r\n }\r\n\r\n /**\r\n * rotate 90\r\n * @returns {Vector2}\r\n */\r\n rotate90() {\r\n return new Vector2(this.y, -this.x)\r\n }\r\n\r\n /**\r\n * add to another vector\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n add(a: Vector2) {\r\n return new Vector2(a.x + this.x, a.y + this.y)\r\n }\r\n\r\n /**\r\n * subtract with another vector\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n subtract(a: Vector2) {\r\n if (!a) {\r\n return this.clone()\r\n }\r\n return new Vector2(this.x - a.x, this.y - a.y)\r\n }\r\n\r\n /**\r\n * multiply by a number\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n multiply(a: number) {\r\n return new Vector2(a * this.x, a * this.y)\r\n }\r\n\r\n /**\r\n * rotate by an angle\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n rotateBy(a: number) {\r\n let cos = Math.cos(a * Math.PI / 180)\r\n let sin = Math.sin(a * Math.PI / 180)\r\n return new Vector2(this.x * cos - this.y * sin, this.x * sin + this.y * cos)\r\n }\r\n\r\n rotateByRadian(a: number): Vector2 {\r\n let cos = Math.cos(a)\r\n let sin = Math.sin(a)\r\n return new Vector2(this.x * cos - this.y * sin, this.x * sin + this.y * cos)\r\n }\r\n\r\n /**\r\n * multiply by a vector\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n cross(a: Vector2) {\r\n return this.x * a.y - this.y * a.x\r\n }\r\n\r\n /**\r\n * dot a vector\r\n * @param a\r\n * @returns {number}\r\n */\r\n dot(a: Vector2) {\r\n return a.x * this.x + a.y * this.y\r\n }\r\n\r\n static perp(v1: number[], v2: number[]) {\r\n return new Vector2(v2[1] - v1[1],\r\n v1[0] - v2[0])\r\n }\r\n\r\n static neg(v: Vector2) {\r\n return new Vector2(-v.x, -v.y)\r\n }\r\n}\r\n","import {Vector2} from \"./Vector2\"\r\n\r\nexport class MathUtils {\r\n static clamp(value: number, min: number, max: number) {\r\n return value < min ? min : (value > max ? max : value)\r\n }\r\n\r\n static toRadians(angleDegrees: number) {\r\n return (angleDegrees * Math.PI) / 180.0\r\n }\r\n\r\n static distance(p1: Vector2, p2: Vector2): number {\r\n return Math.sqrt((p1.x - p2.x)*(p1.x - p2.x) + (p1.y - p2.y)*(p1.y - p2.y))\r\n }\r\n\r\n static findNextPowerOf2(n: number) {\r\n /** decrement `n` (to handle the case when `n` itself is a power of 2) **/\r\n n = n - 1\r\n\r\n /** calculate the position of the last set bit of `n` **/\r\n let lg = Math.log2(n)\r\n\r\n /** next power of two will have a bit set at position `lg+1`. **/\r\n return 1 << lg + 1\r\n }\r\n\r\n static findPreviousPowerOf2(n: number) {\r\n return 1 << 31 - Math.clz32(n)\r\n }\r\n}\r\n","/**\r\n * class vector 3\r\n */\r\nexport class Vector3 {\r\n\r\n /**\r\n * create a vector 3 class\r\n * @param x\r\n * @param y\r\n * @param z\r\n */\r\n constructor(public x: number = 0.0,\r\n public y: number = 0.0,\r\n public z: number = 0.0) {\r\n }\r\n\r\n clone() {\r\n return new Vector3(this.x, this.y, this.z)\r\n }\r\n\r\n buffer(): Float32Array {\r\n return new Float32Array([this.x, this.y, this.z])\r\n }\r\n\r\n /**\r\n * get the length of the vector\r\n * @returns {number}\r\n */\r\n get length(): number {\r\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z)\r\n }\r\n\r\n /**\r\n * @return {number}\r\n */\r\n get lengthSq(): number {\r\n return this.x * this.x + this.y * this.y + this.z * this.z\r\n }\r\n\r\n /**\r\n * normalize the vector\r\n * @returns {Vector3}\r\n */\r\n normalize(): Vector3 {\r\n let length = this.length\r\n let x = 0.0\r\n let y = 0.0\r\n let z = 0.0\r\n\r\n if (length > 0) {\r\n x = this.x / length\r\n y = this.y / length\r\n z = this.z / length\r\n }\r\n\r\n return new Vector3(x, y, z)\r\n }\r\n\r\n /**\r\n * set value of the vector\r\n * @param a\r\n */\r\n set(a: Vector3) {\r\n this.x = a.x\r\n this.y = a.y\r\n this.z = a.z\r\n }\r\n\r\n /**\r\n * invert the vector direction\r\n * @returns {Vector3}\r\n */\r\n invert() {\r\n return new Vector3(-this.x, -this.y, -this.z)\r\n }\r\n\r\n /**\r\n * rotate 90\r\n * @returns {Vector3}\r\n */\r\n rotate90() {\r\n return new Vector3(this.y, -this.x, this.z)\r\n }\r\n\r\n /**\r\n * add to another vector\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n add(a: Vector3) {\r\n return new Vector3(a.x + this.x, a.y + this.y, a.z + this.z)\r\n }\r\n\r\n /**\r\n * subtract with another vector\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n subtract(a: Vector3) {\r\n if (!a) {\r\n return this.clone()\r\n }\r\n return new Vector3(this.x - a.x, this.y - a.y, this.z - a.z)\r\n }\r\n\r\n /**\r\n * multiply by a number\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n multiply(a: number) {\r\n return new Vector3(a * this.x, a * this.y, a * this.z)\r\n }\r\n\r\n /**\r\n * rotate by an angle\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n rotateBy(a: number) {\r\n let cos = Math.cos(a * Math.PI / 180)\r\n let sin = Math.sin(a * Math.PI / 180)\r\n return new Vector3(this.x * cos - this.y * sin, this.x * sin + this.y * cos)\r\n }\r\n\r\n /**\r\n * multiply by a vector\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n cross(a: Vector3) {\r\n return new Vector3(\r\n this.y * a.z - this.z * a.y,\r\n this.z * a.x - this.x * a.z,\r\n this.x * a.y - this.y * a.x\r\n )\r\n }\r\n\r\n /**\r\n * dot a vector\r\n * @param a\r\n * @returns {number}\r\n */\r\n dot(a: Vector3) {\r\n return a.x * this.x + a.y * this.y + a.z * this.z\r\n }\r\n\r\n static perp(v1: number[], v2: number[]) {\r\n return new Vector3(v2[1] - v1[1],\r\n v1[0] - v2[0])\r\n }\r\n\r\n static neg(v: Vector3) {\r\n return new Vector3(-v.x, -v.y, -v.z)\r\n }\r\n}\r\n","/**\r\n * the matrix class\r\n */\r\nimport {Vector3} from \"./Vector3\"\r\n\r\nexport class Matrix4 {\r\n\r\n /**\r\n * create an eye 4x4 matrix\r\n * @param data\r\n */\r\n constructor(public data: Float32Array = new Float32Array([\r\n 1.0, 0.0, 0.0, 0.0,\r\n 0.0, 1.0, 0.0, 0.0,\r\n 0.0, 0.0, 1.0, 0.0,\r\n 0.0, 0.0, 0.0, 1.0])) {\r\n }\r\n\r\n setIdentity(x = 1.0, y = 1.0, z = 1.0) {\r\n this.data[0] = x\r\n this.data[1] = 0\r\n this.data[2] = 0\r\n this.data[3] = 0\r\n this.data[4] = 0\r\n this.data[5] = y\r\n this.data[6] = 0\r\n this.data[7] = 0\r\n this.data[8] = 0\r\n this.data[9] = 0\r\n this.data[10] = z\r\n this.data[11] = 0\r\n this.data[12] = 0\r\n this.data[13] = 0\r\n this.data[14] = 0\r\n this.data[15] = 1.0\r\n return this\r\n }\r\n\r\n copy(other: Matrix4) {\r\n this.data[0] = other.data[0]\r\n this.data[1] = other.data[1]\r\n this.data[2] = other.data[2]\r\n this.data[3] = other.data[3]\r\n this.data[4] = other.data[4]\r\n this.data[5] = other.data[5]\r\n this.data[6] = other.data[6]\r\n this.data[7] = other.data[7]\r\n this.data[8] = other.data[8]\r\n this.data[9] = other.data[9]\r\n this.data[10] = other.data[10]\r\n this.data[11] = other.data[11]\r\n this.data[12] = other.data[12]\r\n this.data[13] = other.data[13]\r\n this.data[14] = other.data[14]\r\n this.data[15] = other.data[15]\r\n return this\r\n }\r\n\r\n /**\r\n * get a translation matrix\r\n * @param x\r\n * @param y\r\n * @param z\r\n * @returns {Matrix4}\r\n */\r\n static translate(x: number, y: number, z: number = 0.0) {\r\n\r\n /// get translation matrix\r\n return new Matrix4(new Float32Array([\r\n 1.0, 0.0, 0.0, 0.0,\r\n 0.0, 1.0, 0.0, 0.,\r\n 0.0, 0.0, 1.0, 0.0,\r\n x, y, z, 1.0]))\r\n }\r\n\r\n translate(x: number, y: number, z: number = 0.0) {\r\n this.data[12] += x\r\n this.data[13] += y\r\n this.data[14] += z\r\n return this\r\n }\r\n\r\n get position() {\r\n return new Vector3(this.data[12], this.data[13], this.data[14])\r\n }\r\n\r\n /**\r\n * get a rotation matrix around x-axis\r\n * @param alpha\r\n * @returns {Matrix4}\r\n */\r\n static rotateX(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n /// get translation matrix\r\n return new Matrix4(new Float32Array([\r\n 1.0, 0.0, 0.0, 0.0,\r\n 0.0, cosA, sinA, 0.0,\r\n 0.0, -sinA, cosA, 0.0,\r\n 0.0, 0.0, 0.0, 1.0\r\n ]))\r\n }\r\n\r\n setRotationX(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n this.setIdentity()\r\n this.data[5] = cosA\r\n this.data[6] = sinA\r\n this.data[9] = -sinA\r\n this.data[10] = cosA\r\n return this\r\n }\r\n\r\n\r\n rotateX(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n let r1 = this.data[1]\r\n let r2 = this.data[2]\r\n this.data[1] = r1 * cosA - r2 * sinA\r\n this.data[2] = r1 * sinA + r2 * cosA\r\n\r\n r1 = this.data[5]\r\n r2 = this.data[6]\r\n this.data[5] = r1 * cosA - r2 * sinA\r\n this.data[6] = r1 * sinA + r2 * cosA\r\n\r\n r1 = this.data[9]\r\n r2 = this.data[10]\r\n this.data[9] = r1 * cosA - r2 * sinA\r\n this.data[10] = r1 * sinA + r2 * cosA\r\n\r\n r1 = this.data[13]\r\n r2 = this.data[14]\r\n this.data[13] = r1 * cosA - r2 * sinA\r\n this.data[14] = r1 * sinA + r2 * cosA\r\n return this\r\n }\r\n\r\n\r\n /**\r\n * get a rotation matrix around y-axis\r\n * @param alpha\r\n * @returns {Matrix4}\r\n */\r\n static rotateY(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n /// get translation matrix\r\n return new Matrix4(new Float32Array([\r\n cosA, 0.0, sinA, 0.0,\r\n 0.0, 1.0, 0.0, 0.0,\r\n -sinA, 0.0, cosA, 0.0,\r\n 0.0, 0.0, 0.0, 1.0\r\n ]))\r\n }\r\n\r\n setRotationY(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n this.setIdentity()\r\n this.data[0] = cosA\r\n this.data[2] = sinA\r\n this.data[8] = -sinA\r\n this.data[10] = cosA\r\n return this\r\n }\r\n\r\n rotateY(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n let r0 = this.data[0]\r\n let r2 = this.data[2]\r\n this.data[0] = r0 * cosA - r2 * sinA\r\n this.data[2] = r0 * sinA + r2 * cosA\r\n\r\n r0 = this.data[4]\r\n r2 = this.data[6]\r\n this.data[4] = r0 * cosA - r2 * sinA\r\n this.data[6] = r0 * sinA + r2 * cosA\r\n\r\n r0 = this.data[8]\r\n r2 = this.data[10]\r\n this.data[8] = r0 * cosA - r2 * sinA\r\n this.data[10] = r0 * sinA + r2 * cosA\r\n\r\n r0 = this.data[12]\r\n r2 = this.data[14]\r\n this.data[12] = r0 * cosA - r2 * sinA\r\n this.data[14] = r0 * sinA + r2 * cosA\r\n return this\r\n }\r\n\r\n /**\r\n * get a rotation matrix around z-axis\r\n * @param alpha\r\n * @returns {Matrix4}\r\n */\r\n static rotateZ(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n /// get translation matrix\r\n return new Matrix4(new Float32Array([\r\n cosA, sinA, 0.0, 0.0,\r\n -sinA, cosA, 0.0, 0.0,\r\n 0.0, 0.0, 1.0, 0.0,\r\n 0.0, 0.0, 0.0, 1.0\r\n ]))\r\n }\r\n\r\n setRotationZ(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n this.setIdentity()\r\n this.data[0] = cosA\r\n this.data[1] = sinA\r\n this.data[4] = -sinA\r\n this.data[5] = cosA\r\n return this\r\n }\r\n\r\n rotateZ(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n let r0 = this.data[0]\r\n let r1 = this.data[1]\r\n\r\n this.data[0] = r0 * cosA - r1 * sinA\r\n this.data[1] = r0 * sinA + r1 * cosA\r\n\r\n r0 = this.data[4]\r\n r1 = this.data[5]\r\n this.data[4] = r0 * cosA - r1 * sinA\r\n this.data[5] = r0 * sinA + r1 * cosA\r\n\r\n r0 = this.data[8]\r\n r1 = this.data[9]\r\n this.data[8] = r0 * cosA - r1 * sinA\r\n this.data[9] = r0 * sinA + r1 * cosA\r\n\r\n r0 = this.data[12]\r\n r1 = this.data[13]\r\n this.data[12] = r0 * cosA - r1 * sinA\r\n this.data[13] = r0 * sinA + r1 * cosA\r\n return this\r\n }\r\n\r\n /**\r\n * get a scale matrix\r\n * @param x\r\n * @param y\r\n * @param z\r\n * @returns {Matrix4}\r\n */\r\n // static scale(x: number, y?: number, z?: number) {\r\n // if (y == null) {\r\n // y = x\r\n // z = x\r\n // }\r\n\r\n // return new Matrix4( new Float32Array([\r\n // x, 0.0, 0.0, 0.0,\r\n // 0.0, y, 0.0, 0.0,\r\n // 0.0, 0.0, z, 0.0,\r\n // 0.0, 0.0, 0.0, 1.0\r\n // ]))\r\n // }\r\n\r\n // scale(x: number, y?: number, z?: number) {\r\n // if (y == null) {\r\n // y = x\r\n // z = x\r\n // }\r\n\r\n // let r0 = this.data[0]\r\n // let r1 = this.data[1]\r\n // let r2 = this.data[2]\r\n // this.data[0] = r0 * x\r\n // this.data[1] = r1 * y\r\n // this.data[2] = r2 * z\r\n\r\n // r0 = this.data[4]\r\n // r1 = this.data[5]\r\n // r2 = this.data[6]\r\n // this.data[4] = r0 * x\r\n // this.data[5] = r1 * y\r\n // this.data[6] = r2 * z\r\n\r\n // r0 = this.data[8]\r\n // r1 = this.data[9]\r\n // r2 = this.data[10]\r\n // this.data[8] = r0 * x\r\n // this.data[9] = r1 * y\r\n // this.data[10] = r2 * z\r\n\r\n // r0 = this.data[12]\r\n // r1 = this.data[13]\r\n // r2 = this.data[14]\r\n // this.data[12] = r0 * x\r\n // this.data[13] = r1 * y\r\n // this.data[14] = r2 * z\r\n // return this\r\n // }\r\n\r\n /**\r\n * concatenate with other transformation matrix\r\n * @param matrix\r\n * @returns {Matrix4}\r\n */\r\n multiply(matrix: Matrix4) {\r\n let result = new Matrix4(new Float32Array([\r\n 0.0, 0.0, 0.0, 0.0,\r\n 0.0, 0.0, 0.0, 0.0,\r\n 0.0, 0.0, 0.0, 0.0,\r\n 0.0, 0.0, 0.0, 0.0\r\n ]))\r\n\r\n if (matrix == null){\r\n return result\r\n }\r\n\r\n for (let i = 0; i < 4; ++i) {\r\n for (let j = 0; j < 4; ++j) {\r\n for (let k = 0; k < 4; ++k) {\r\n result.data[i * 4 + k] += this.data[i * 4 + j] * matrix.data[j * 4 + k]\r\n }\r\n }\r\n }\r\n return result\r\n }\r\n\r\n // fconcat(\r\n // data0, data1, data2, data3,\r\n // data4, data5, data6, data7,\r\n // data8, data9, data10, data11,\r\n // data12, data13, data14, data15) {\r\n // let r0 = this.data[0]\r\n // let r1 = this.data[1]\r\n // let r2 = this.data[2]\r\n // let r3 = this.data[3]\r\n // this.data[0] = r0 * data0 + r1 * data4 + r2 * data8 + r3 * data12\r\n // this.data[1] = r0 * data1 + r1 * data5 + r2 * data9 + r3 * data13\r\n // this.data[2] = r0 * data2 + r1 * data6 + r2 * data10 + r3 * data14\r\n // this.data[3] = r0 * data3 + r1 * data7 + r2 * data11 + r3 * data15\r\n\r\n // r0 = this.data[4]\r\n // r1 = this.data[5]\r\n // r2 = this.data[6]\r\n // r3 = this.data[7]\r\n // this.data[4] = r0 * data0 + r1 * data4 + r2 * data8 + r3 * data12\r\n // this.data[5] = r0 * data1 + r1 * data5 + r2 * data9 + r3 * data13\r\n // this.data[6] = r0 * data2 + r1 * data6 + r2 * data10 + r3 * data14\r\n // this.data[7] = r0 * data3 + r1 * data7 + r2 * data11 + r3 * data15\r\n\r\n // r0 = this.data[8]\r\n // r1 = this.data[9]\r\n // r2 = this.data[10]\r\n // r3 = this.data[11]\r\n // this.data[8] = r0 * data0 + r1 * data4 + r2 * data8 + r3 * data12\r\n // this.data[9] = r0 * data1 + r1 * data5 + r2 * data9 + r3 * data13\r\n // this.data[10] = r0 * data2 + r1 * data6 + r2 * data10 + r3 * data14\r\n // this.data[11] = r0 * data3 + r1 * data7 + r2 * data11 + r3 * data15\r\n\r\n // r0 = this.data[12]\r\n // r1 = this.data[13]\r\n // r2 = this.data[14]\r\n // r3 = this.data[15]\r\n // this.data[12] = r0 * data0 + r1 * data4 + r2 * data8 + r3 * data12\r\n // this.data[13] = r0 * data1 + r1 * data5 + r2 * data9 + r3 * data13\r\n // this.data[14] = r0 * data2 + r1 * data6 + r2 * data10 + r3 * data14\r\n // this.data[15] = r0 * data3 + r1 * data7 + r2 * data11 + r3 * data15\r\n // return this\r\n // }\r\n\r\n // concat(matrix: Matrix4) {\r\n // if (matrix == null){\r\n // return this\r\n // }\r\n // return this.fconcat(\r\n // matrix.data[0], matrix.data[1], matrix.data[2], matrix.data[3],\r\n // matrix.data[4], matrix.data[5], matrix.data[6], matrix.data[7],\r\n // matrix.data[8], matrix.data[9], matrix.data[10], matrix.data[11],\r\n // matrix.data[12], matrix.data[13], matrix.data[14], matrix.data[15]\r\n // )\r\n // }\r\n\r\n /**\r\n *\r\n * @param left\r\n * @param right\r\n * @param bottom\r\n * @param top\r\n * @param near\r\n * @param far\r\n * @returns {Matrix4}\r\n */\r\n static ortho(left: number, right: number,\r\n bottom: number, top: number,\r\n near: number = -100.0, far: number = 100.0) {\r\n return new Matrix4(new Float32Array([\r\n 2.0/(right - left), 0.0, 0.0, 0.0,\r\n 0.0, 2.0/(top - bottom), 0.0, 0.0,\r\n 0.0, 0.0, -2.0/(far - near), 0.0,\r\n -(left + right)/(right - left), -(top + bottom)/(top - bottom), -(near + far)/(near - far), 1.0\r\n ]))\r\n }\r\n\r\n setOrtho(left: number, right: number,\r\n bottom: number, top: number,\r\n near: number = -100.0, far: number = 100.0) {\r\n this.data[0] = 2.0/(right - left)\r\n this.data[1] = 0\r\n this.data[2] = 0\r\n this.data[3] = 0\r\n this.data[4] = 0\r\n this.data[5] = 2.0/(top - bottom)\r\n this.data[6] = 0\r\n this.data[7] = 0\r\n this.data[8] = 0\r\n this.data[9] = 0\r\n this.data[10] = -2.0/(far - near)\r\n this.data[11] = -1\r\n this.data[12] = -(left + right)/(right - left)\r\n this.data[13] = -(top + bottom)/(top - bottom)\r\n this.data[14] = -(near + far)/(near - far)\r\n this.data[15] = 1.0\r\n return this\r\n }\r\n\r\n /**\r\n * create a perspective matrix\r\n * @param fov\r\n * @param aspect\r\n * @param near\r\n * @param far\r\n * @returns {Matrix4}\r\n */\r\n static perspective(fov: number, aspect: number, near: number, far: number) {\r\n let y = Math.tan(fov / 2.0) * near\r\n let x = y * aspect\r\n return Matrix4.frustum(-x, x, -y, y, near, far)\r\n }\r\n\r\n setPerspective(fov: number, aspect: number, near: number, far: number) {\r\n let y = Math.tan(fov / 2.0) * near\r\n let x = y * aspect\r\n return this.setFrustum(-x, x, -y, y, near, far)\r\n }\r\n\r\n /**\r\n *\r\n * @param left\r\n * @param right\r\n * @param bottom\r\n * @param top\r\n * @param near\r\n * @param far\r\n * @returns {Matrix4}\r\n */\r\n static frustum(left: number, right: number,\r\n bottom: number, top: number,\r\n near: number = -100.0, far: number = 100.0) {\r\n return new Matrix4(new Float32Array([\r\n 2 * near / (right - left), 0, 0, 0,\r\n 0, 2 * near / (top - bottom), 0, 0,\r\n (right + left)/(right - left), (top + bottom) / (top - bottom), -(far + near) / (far - near), -1,\r\n 0, 0, -2 * near * far / (far - near), 0\r\n ]))\r\n }\r\n\r\n setFrustum(left: number, right: number,\r\n bottom: number, top: number,\r\n near: number = -100.0, far: number = 100.0) {\r\n this.data[0] = 2 * near / (right - left);\r\n this.data[1] = 0\r\n this.data[2] = 0\r\n this.data[3] = 0\r\n this.data[4] = 0\r\n this.data[5] = 2 * near / (top - bottom)\r\n this.data[6] = 0\r\n this.data[7] = 0\r\n this.data[8] = (right + left)/(right - left)\r\n this.data[9] = (top + bottom) / (top - bottom)\r\n this.data[10] = -(far + near) / (far - near)\r\n this.data[11] = -1\r\n this.data[12] = 0\r\n this.data[13] = 0\r\n this.data[14] = -2 * near * far / (far - near)\r\n this.data[15] = 0\r\n }\r\n\r\n /**\r\n * transform a vector\r\n * @param vector\r\n * @param w include transformation\r\n */\r\n transform(vector: Vector3, w: number = 0.0) {\r\n\r\n let x = this.data[0 * 4 + 0] * vector.x\r\n + this.data[1 * 4 + 0] * vector.y\r\n + this.data[2 * 4 + 0] * vector.z\r\n + this.data[3 * 4 + 0] * w\r\n\r\n let y = this.data[0 * 4 + 1] * vector.x\r\n + this.data[1 * 4 + 1] * vector.y\r\n + this.data[2 * 4 + 1] * vector.z\r\n + this.data[3 * 4 + 1] * w\r\n\r\n let z = this.data[0 * 4 + 2] * vector.x\r\n + this.data[1 * 4 + 2] * vector.y\r\n + this.data[2 * 4 + 2] * vector.z\r\n + this.data[3 * 4 + 2] * w\r\n\r\n w = this.data[0 * 4 + 3] * vector.x\r\n + this.data[1 * 4 + 3] * vector.y\r\n + this.data[2 * 4 + 3] * vector.z\r\n + this.data[3 * 4 + 3] * w\r\n\r\n if (w == 0) {\r\n w = 1\r\n }\r\n\r\n return new Vector3(\r\n x / w, y / w, z / w\r\n )\r\n }\r\n\r\n /**\r\n * get the matrix buffer\r\n * @returns {number[]}\r\n */\r\n buffer() {\r\n return this.data\r\n }\r\n\r\n /**\r\n * return look at matrix\r\n * @param eye\r\n * @param target\r\n * @param scale\r\n * @param up\r\n * @returns {Matrix4}\r\n */\r\n // static lookAt(eye: Vector3, target: Vector3, scale: number = 1, up = new Vector3(0, 0, 1)) {\r\n\r\n // //compute x, y, z\r\n // let zaxis = eye.subtract(target).normalize()\r\n // let xaxis = up.cross(zaxis).normalize()\r\n // let yaxis = zaxis.cross(xaxis).normalize()\r\n // let transformation = Matrix4.translate(-eye.x, -eye.y, -eye.z)\r\n // transformation.fconcat(\r\n // xaxis.x, yaxis.x, zaxis.x, 0.0,\r\n // xaxis.y, yaxis.y, zaxis.y, 0.0,\r\n // xaxis.z, yaxis.z, zaxis.z, 0.0,\r\n // 0.0, 0.0, 0.0, 1.0\r\n // )\r\n // return transformation.scale(scale)\r\n // }\r\n\r\n // lookAt(eye: Vector3, target: Vector3, scale: number = 1, up = new Vector3(0, 0, 1)) {\r\n // //compute x, y, z\r\n // let zaxis = eye.subtract(target).normalize()\r\n // let xaxis = up.cross(zaxis).normalize()\r\n // let yaxis = zaxis.cross(xaxis).normalize()\r\n // this.setIdentity()\r\n // this.translate(-eye.x, -eye.y, -eye.z)\r\n // this.fconcat(\r\n // xaxis.x, yaxis.x, zaxis.x, 0.0,\r\n // xaxis.y, yaxis.y, zaxis.y, 0.0,\r\n // xaxis.z, yaxis.z, zaxis.z, 0.0,\r\n // 0.0, 0.0, 0.0, 1.0\r\n // )\r\n // return this.scale(scale)\r\n // }\r\n\r\n inverse() {\r\n\r\n // this is a matrix of 3 x 3 or larger\r\n // calculate inverse using gauss-jordan elimination\r\n // http://en.wikipedia.org/wiki/Gaussian_elimination\r\n // http://mathworld.wolfram.com/MatrixInverse.html\r\n // http://math.uww.edu/~mcfarlat/inverse.htm\r\n\r\n // make a copy of the matrix (only the arrays, not of the elements)\r\n const rows = 4\r\n let cols = 4\r\n\r\n let A = this.data.slice()\r\n\r\n // create an identity matrix which in the end will contain the\r\n // matrix inverse\r\n let B = new Float32Array([\r\n 1.0, 0.0, 0.0, 0.0,\r\n 0.0, 1.0, 0.0, 0.0,\r\n 0.0, 0.0, 1.0, 0.0,\r\n 0.0, 0.0, 0.0, 1.0\r\n ])\r\n\r\n //eye(rows).valueOf();\r\n\r\n // loop over all columns, and perform row reductions\r\n for (let c = 0; c < cols; ++c) {\r\n\r\n // element Acc should be non zero. if not, swap content\r\n // with one of the lower rows\r\n let r = c\r\n while (r < rows && A[r * 4 + c] == 0) {\r\n ++r\r\n }\r\n if (r == rows || A[r * 4 + c] == 0) {\r\n\r\n // TODO: in case of zero det, just return a matrix wih Infinity values? (like octave)\r\n console.log(\"Cannot calculate inverse, determinant is zero\")\r\n return this\r\n }\r\n if (r != c) {\r\n let Ac = A.slice(c * rows, (c + 1) * rows)\r\n let Ar = A.slice(r * rows, (r + 1) * rows)\r\n A.set(Ar, c * rows)\r\n A.set(Ac, r * rows)\r\n let Bc = B.slice(c * rows, (c + 1) * rows)\r\n let Br = B.slice(r * rows, (r + 1) * rows)\r\n B.set(Br, c * rows)\r\n B.set(Bc, r * rows)\r\n }\r\n\r\n // eliminate non-zero values on the other rows at column c\r\n let Ac = A.slice(c * rows, (c + 1) * rows)\r\n let Bc = B.slice(c * rows, (c + 1) * rows)\r\n\r\n for (r = 0; r < rows; ++r) {\r\n let Ar = A.slice(r * rows, (r + 1) * rows)\r\n let Br = B.slice(r * rows, (r + 1) * rows)\r\n if(r != c) {\r\n\r\n // eliminate value at column c and row r\r\n if (Ar[c] != 0) {\r\n let f = -Ar[c] / Ac[c]\r\n\r\n // add (f * row c) to row r to eliminate the value\r\n // at column c\r\n for (let s = c; s < cols; ++s) {\r\n Ar[s] = Ar[s] + (f * Ac[s])\r\n }\r\n A.set(Ar, r * rows)\r\n for (let s = 0; s < cols; ++s) {\r\n Br[s] = Br[s] + (f * Bc[s])\r\n }\r\n B.set(Br, r * rows)\r\n }\r\n }\r\n else {\r\n\r\n // normalize value at Acc to 1,\r\n // divide each value on row r with the value at Acc\r\n let f = Ac[c]\r\n if (f == 0) {\r\n console.log(\"Cannot calculate inverse, determinant is zero\")\r\n return this\r\n }\r\n for (let s = c; s < cols; ++s) {\r\n Ar[s] = Ar[s] / f\r\n }\r\n A.set(Ar, r * rows)\r\n for (let s = 0; s < cols; ++s) {\r\n Br[s] = Br[s] / f\r\n }\r\n B.set(Br, r * rows)\r\n }\r\n }\r\n }\r\n return new Matrix4(B)\r\n }\r\n}\r\n","import {Vector3} from \"./Vector3\"\r\n\r\nexport class Color {\r\n private _buffer: Float32Array\r\n\r\n /**\r\n * create a color\r\n */\r\n constructor(red: number = 0.0,\r\n green: number = 0.0,\r\n blue: number = 0.0,\r\n public alpha: number = 1.0) {\r\n this._buffer = new Float32Array([red, green, blue])\r\n }\r\n\r\n /**\r\n * get the buffer\r\n */\r\n rgbBuffer(): Float32Array {\r\n return this._buffer\r\n }\r\n\r\n /**\r\n * get the buffer\r\n */\r\n buffer(): Float32Array {\r\n return new Float32Array([this.red, this.green, this.blue, this.alpha])\r\n }\r\n\r\n get red() {\r\n return this._buffer[0]\r\n }\r\n\r\n get green() {\r\n return this._buffer[1]\r\n }\r\n\r\n get blue() {\r\n return this._buffer[2]\r\n }\r\n\r\n /**\r\n * string style for canvas\r\n * @return {string}\r\n */\r\n get rgba() {\r\n return \"rgba(\" + this.red * 255 + \",\" + this.green * 255 + \",\" + this.blue * 255 + \",\" + this.alpha + \")\"\r\n }\r\n\r\n /**\r\n * create color from hex string\r\n */\r\n static fromHex(hexString = \"000000\") {\r\n if (hexString.length == 4 || hexString.length == 7 || hexString.length == 9) {\r\n hexString = hexString.substring(1, hexString.length)\r\n }\r\n if (hexString.length == 3) {\r\n hexString = hexString.split(\"\").map(x => x + x).join(\"\")\r\n }\r\n\r\n let colorCode = parseInt(hexString, 16)\r\n\r\n if (hexString.length == 6) {\r\n return new Color(\r\n (colorCode >> 16) / 255,\r\n ((colorCode >> 8) & 255) / 255,\r\n (colorCode & 255) / 255\r\n )\r\n }\r\n else {\r\n return new Color(\r\n ((colorCode >> 24) & 255) / 255,\r\n ((colorCode >> 16) & 255) / 255,\r\n ((colorCode >> 8) & 255) / 255,\r\n (colorCode & 255) / 255\r\n )\r\n }\r\n }\r\n\r\n static fromInt(colorCode = 0) {\r\n if (colorCode < 0) {\r\n colorCode = 0\r\n }\r\n return new Color(\r\n ((colorCode >> 16) & 255) / 255,\r\n ((colorCode >> 8) & 255) / 255,\r\n (colorCode & 255) / 255\r\n )\r\n }\r\n\r\n static fromVec3(color: Vector3) {\r\n return new Color(\r\n color.x,\r\n color.y,\r\n color.z\r\n )\r\n }\r\n\r\n static mix(a: Color, b: Color, factor: number) {\r\n return new Color(\r\n a.red * factor + b.red * (1 - factor),\r\n a.green* factor + b.green * (1 - factor),\r\n a.blue * factor + b.blue * (1 - factor),\r\n a.alpha * factor + b.alpha * (1 - factor)\r\n )\r\n }\r\n\r\n get code() {\r\n let float2hex = (f: number) => {\r\n let hex = Math.floor(f * 255).toString(16)\r\n hex = hex.length == 1 ? \"0\" + hex : hex\r\n hex = hex.length > 2 ? hex.substr(0, 2) : hex\r\n return hex\r\n }\r\n return \"#\" + float2hex(this.red) + float2hex(this.green) + float2hex(this.blue) + float2hex(this.alpha)\r\n }\r\n\r\n static isValid(colorString: string): boolean{\r\n return /^#?([0-9A-Fa-f]){6,8}$/i.test(colorString)\r\n }\r\n}\r\n","import { Matrix4 } from \"../engine/Matrix\"\r\nimport { Color } from \"../engine/Color\"\r\n\r\nexport class MapConstants {\r\n\r\n static none = -1.0\r\n\r\n static baseTileSize = 256\r\n\r\n static minLatitude = -85.051128779806604\r\n\r\n static maxLatitude = 85.051128779806604\r\n\r\n static maxLongitude = 180\r\n\r\n static minLongitude = -180\r\n\r\n static maxDegrees = 360\r\n\r\n static radiusEarthMeters = 6378137.0\r\n\r\n static halfEarthCircumFerenceInMeter = MapConstants.radiusEarthMeters * Math.PI\r\n\r\n static earthCircumFerenceInMeter = MapConstants.halfEarthCircumFerenceInMeter * 2\r\n\r\n static tileCacheSize = 512\r\n\r\n static baseMapLowestOrder = Number.MIN_SAFE_INTEGER\r\n\r\n static baseMapMiddleOrder = -1.0E6\r\n\r\n static buildingLayerOrder = 0\r\n\r\n static userPOILayerOrder = 1.0\r\n\r\n static pointGeoJsonWidth = 32\r\n\r\n static pointGeoJsonHeight = 32\r\n\r\n static placeSelectedIdPrefix = \"maplink-selected-place-\"\r\n\r\n static placeWidth = 26\r\n\r\n static placeHeight = 32\r\n\r\n static spritePadding = 2.\r\n\r\n static get placeFontSize() {\r\n return 12\r\n }\r\n\r\n static poiFontWeight = \"normal\"\r\n\r\n static poiMaxWidth = 120\r\n\r\n static poiNumLine = 2\r\n\r\n static poiDefaultColor = new Color(0.5, 0.6, 0.7)\r\n\r\n static pointGeoJsonAnchor = [0.5, 1.0]\r\n\r\n static infoWindowPadding = 2\r\n\r\n // pixels/s\r\n static flingMinVelocity = -10000.0\r\n\r\n // pixels/s\r\n static flingMaxVelocity = 10000.0\r\n\r\n static flingTimeConstant = 150.0\r\n\r\n static flingSpeedMultiply = 15\r\n\r\n static zoomSpeedMouseWheel = 15\r\n\r\n // milliseconds\r\n static minDurationFlyTo = 1000\r\n\r\n // milliseconds\r\n static maxDurationFlyTo = 13000\r\n\r\n static maxBearingAngle = 720\r\n\r\n static defaultMinZoom = 3\r\n\r\n static defaultMinZoom3d = 17\r\n\r\n static defaultMaxZoom = 22\r\n\r\n static defaultMaxNativeZoom = 19\r\n\r\n static geoJsonMinNativeZoom = 20\r\n\r\n static vectorBuildingsMinZoom = 17\r\n\r\n static tileExtend = 4096.0\r\n\r\n static defaultAnimationDuration = 300\r\n\r\n static defaultFlyZoom = 17.0\r\n\r\n static minTilt = 0.0\r\n\r\n static maxTilt2D = 40.0\r\n\r\n static maxTilt3D = 87.0\r\n\r\n static get maxTiltIntersectWithScreen() {\r\n return 90.0 - CameraConstants.fov * MathConstants.rad2Deg\r\n }\r\n\r\n static minTiltReduceFog = 75.0\r\n\r\n static minTimeMoving = 150.0\r\n\r\n static minTimeDoubleZoom = 500.0\r\n\r\n static minTimeSpanTo = 500.0\r\n\r\n static maxTimeSpanTo = 4000.0\r\n\r\n static skyboxMapBorderMinimum = 0.001\r\n\r\n static metersPerPixelAtLatitude = 0.0\r\n\r\n static mapBackgroundColor2D = Color.fromHex(\"#f2efe9\")\r\n\r\n static mapBackgroundColor3D = Color.fromHex(\"#e1e1e1\")\r\n\r\n static satellitePOIColor = new Color(1.0, 1.0, 1.0)\r\n\r\n static satellitePOIHalo = new Color(0.0, 0.0, 0.0)\r\n\r\n static mapBackgroundScaleRatio = 20000.0\r\n\r\n static clusterMaxPointCount = 1000000\r\n\r\n static biasMatrix = new Matrix4(new Float32Array([\r\n 0.5, 0.0, 0.0, 0.0,\r\n 0.0, 0.5, 0.0, 0.0,\r\n 0.0, 0.0, 0.5, 0.0,\r\n 0.5, 0.5, 0.5, 1.0\r\n ]))\r\n\r\n static FPS = 1000.0 / 15.0\r\n\r\n static buildingOverlayIdPrefix = \"_overlay\"\r\n\r\n static customBuildingType = \"custom_building\"\r\n\r\n static touchBoxSize = 8.0\r\n\r\n static zoomStep = 0.25\r\n\r\n static distanceRatioToForceMoveCamera = 3.0 /** ratio with screen size to force move camera when call flyTo() method **/\r\n\r\n static gridIndexExtent = 4096\r\n\r\n static gridIndexN = 4\r\n\r\n static gridIndexPadding = 0\r\n}\r\n\r\n\r\n\r\nexport class SymbolConstants {\r\n\r\n static defaultSymbol = \"markerDefault\"\r\n\r\n static geoJsonLayerId = \"geoJsonLayerId\"\r\n\r\n}\r\n\r\nexport class LayerConstants {\r\n\r\n /** Map layer */\r\n\r\n static readonly rasterLayerId = \"1.0.rasterLayer\"\r\n\r\n static readonly surfaceLayerId = \"1.1.vector.surfaces\"\r\n\r\n static readonly roadsLayerId = \"1.2.vector.roads\"\r\n\r\n static readonly boundaryLayerId = \"1.3.vector.boundaries\"\r\n\r\n static readonly labelLayerId = \"4.label.tile\"\r\n\r\n static readonly rasterOverlayLayerId = \"1.4.rasterOverlay\"\r\n\r\n static readonly imageOverlayLayerId = \"5.imageOverlay\"\r\n\r\n static readonly buildingOverlayLayerId = \"2.buildingOverlay\"\r\n\r\n static readonly pointLayerId = \"2.maplink.vector.tile.points\"\r\n\r\n static readonly pointOverlayLayerId = \"2.maplink.overlay.tile.points\"\r\n\r\n static readonly userPOILayerId = \"1.maplink.vector.tile.user.poi\"\r\n\r\n static readonly buildingLayerId = \"2.buildingLayer\"\r\n\r\n static readonly userBuildingLayerId = \"3.userBuilding.layer\"\r\n\r\n /** Tile layer */\r\n\r\n static readonly roadTileLayerId = \"roadTileLayer\"\r\n\r\n static readonly labelTileLayerId = \"labelTileLayer\"\r\n\r\n static readonly pointTileLayerId = \"pointTileLayer\"\r\n\r\n static readonly buildingTileLayerId = \"buildingTileLayer\"\r\n\r\n static readonly rasterTileLayerId = \"rasterTileLayer\"\r\n}\r\n\r\nexport class MathConstants {\r\n\r\n static rad2Deg = 180 / Math.PI\r\n\r\n static deg2Rad = Math.PI / 180.0\r\n\r\n static epsilon = 1e-6\r\n}\r\n\r\nexport class CameraConstants {\r\n\r\n static fov = 30 * MathConstants.deg2Rad\r\n\r\n static nearPlane = 0.1\r\n\r\n static farPlane = 1000\r\n\r\n static height = 15.5\r\n\r\n}\r\n\r\nexport class PolyConstants {\r\n\r\n static numTrianglesOnRoundCap = 6\r\n\r\n static numTrianglesOnRoundJoin = 5\r\n\r\n static numTrianglesPerCircle = 4\r\n}\r\n\r\nexport class ParticleConstants {\r\n\r\n static rainFrequency = 0.004\r\n\r\n static rainParticleRotation = -25\r\n\r\n static snowFrequency = 0.004\r\n\r\n}\r\n\r\nexport class WeatherConstants {\r\n\r\n static refreshTime = 60000 /** miliseconds */\r\n\r\n static refreshDistance = 10000 /** meter */\r\n\r\n}\r\n\r\nexport class ColorConstants {\r\n static skyColors = {\r\n \"Morning\": Color.fromHex(\"cdf9ff\"),\r\n \"Noon\": Color.fromHex(\"0783f4\"),\r\n \"AfterNoon\": Color.fromHex(\"243a8b\"),\r\n \"Evening\": Color.fromHex(\"182863\"),\r\n }\r\n\r\n static fogColors = {\r\n \"Morning\": Color.fromHex(\"FAD8C4\"),\r\n \"Noon\": Color.fromHex(\"FAFAFA\"),\r\n \"AfterNoon\": Color.fromHex(\"FAA899\"),\r\n \"Evening\": Color.fromHex(\"141c36\"),\r\n }\r\n\r\n static lightColors = {\r\n \"Morning\": Color.fromHex(\"#DE8989\"),\r\n \"Noon\": Color.fromHex(\"#F8F8F8\"),\r\n \"AfterNoon\": Color.fromHex(\"#BE321A\"),\r\n \"Evening\": Color.fromHex(\"#1E0032\")\r\n }\r\n\r\n static getSkyColor(name: string): Color {\r\n return ColorConstants.skyColors[name]\r\n }\r\n\r\n static getFogColor(name: string): Color {\r\n return ColorConstants.fogColors[name]\r\n }\r\n\r\n static getLightColor(name: string): Color {\r\n return ColorConstants.lightColors[name]\r\n }\r\n}\r\n\r\nexport class TimeConstants {\r\n\r\n static morningTime = 6.0\r\n\r\n static noonTime = 12.0\r\n\r\n static afterNoonTime = 16.0\r\n\r\n static eveningTime = 18.0\r\n\r\n}\r\n\r\nexport class FontConstant {\r\n\r\n static fontTextureWidth = 1000\r\n\r\n static fontTextureHeight = 400\r\n\r\n static get fontSize() {\r\n return 24\r\n }\r\n}\r\n\r\nexport class LabelConstant {\r\n /** Max angle (degree) of 2 segment on path that can create text data **/\r\n static maxCurvedTextAngle = 22\r\n}\r\n","export enum ClassType {\r\n //Annotation\r\n MARKER,\r\n CIRCLE,\r\n POLYLINE,\r\n POLYGON,\r\n POI,\r\n BUILDING,\r\n\r\n //UserLayer\r\n VECTOR_TILE_LAYER,\r\n\r\n //Query\r\n BUILDING_QUERY_RESULT,\r\n\r\n //AnnotationData\r\n POLYLINE_DATA,\r\n POLYGON_DATA,\r\n\r\n //Item\r\n ICON,\r\n LATLNG,\r\n POINT,\r\n CAMERA_POSITION,\r\n\r\n //Bounds\r\n LATLNG_BOUNDS,\r\n\r\n //Label\r\n MARKER_LABEL,\r\n\r\n //Feature\r\n FEATURE,\r\n TILE_FEATURE,\r\n VECTOR_TILE_FEATURE\r\n}\r\n\r\nexport class Map4dObject {\r\n private readonly classType: ClassType\r\n\r\n constructor(classType: ClassType) {\r\n this.classType = classType\r\n }\r\n\r\n /**\r\n * Check classType in mapObject\r\n * @param mapObject \r\n * @param classType \r\n * @returns \r\n */\r\n static isClassType(mapObject: any, classType: ClassType): boolean {\r\n let mfClassType = (mapObject || {}).classType\r\n return mfClassType == classType\r\n }\r\n}","import { ClassType, Map4dObject } from \"./Map4dObject\"\r\nimport { MapConstants, MathConstants } from './MapConstants';\r\n\r\n\r\nexport class LatLng extends Map4dObject {\r\n\r\n /** Latitude, in degrees. */\r\n lat: number\r\n\r\n /** Longitude, in degrees. */\r\n lng: number\r\n\r\n constructor(lat: number, lng: number) {\r\n super(ClassType.LATLNG)\r\n this.lat = lat\r\n this.lng = lng\r\n }\r\n\r\n /**\r\n * Comparison function.\r\n * @param other\r\n */\r\n equals(other: LatLng): boolean {\r\n return this.lat == other.lat && this.lng == other.lng\r\n }\r\n\r\n valid() {\r\n return isFinite(this.lat) && Math.abs(this.lat) <= 90\r\n //tile wrap\r\n }\r\n\r\n /**\r\n * Converts to string representation.\r\n */\r\n toString(): string {\r\n return \"(\" + this.lat + \", \" + this.lng + \")\"\r\n }\r\n\r\n static convert(input: ILatLng): LatLng {\r\n if(Map4dObject.isClassType(input, ClassType.LATLNG)) {\r\n return input as LatLng\r\n }\r\n if (Array.isArray(input) && (input.length === 2)) {\r\n return new LatLng(Number(input[1]), Number(input[0]))\r\n }\r\n if (!Array.isArray(input) && typeof input === \"object\" && input !== null && \"lat\" in input && \"lng\" in input) {\r\n return new LatLng(\r\n Number(input.lat),\r\n Number(input.lng))\r\n }\r\n throw new Error(\"`ILngLat` argument must be specified as a LngLat instance, an object \" +\r\n \"{lat: <lat>, lng: <lng>}, or an array of [<lng>, <lat>]\")\r\n }\r\n \r\n distanceTo(target: ILatLng): number {\r\n if (target == null) {\r\n return 0;\r\n }\r\n let desc = LatLng.convert(target)\r\n let latStartRadian = MathConstants.deg2Rad * this.lat\r\n let longStartRadian = MathConstants.deg2Rad * this.lng\r\n let latDescRadian = MathConstants.deg2Rad * desc.lat\r\n let longDescRadian = MathConstants.deg2Rad * desc.lng\r\n let u = Math.sin((latDescRadian - latStartRadian)/2)\r\n let v = Math.sin((longDescRadian - longStartRadian)/2)\r\n\r\n // Distance between two latLngs in meters\r\n return 2.0 * MapConstants.radiusEarthMeters *\r\n Math.asin(Math.sqrt(u * u + Math.cos(latStartRadian) * Math.cos(latDescRadian) * v * v))\r\n }\r\n\r\n normalize(): LatLng {\r\n let sign = this.lat > 0 ? -1 : 1\r\n let lat = (this.lat - sign * 90) % 180 + 90 * sign\r\n sign = this.lng > 0 ? -1 : 1\r\n let lng = (this.lng - sign * 180) % 380 + 180 * sign\r\n return new LatLng(lat, lng)\r\n }\r\n\r\n /**\r\n * add to another LatLng\r\n * @param a\r\n * @returns {LatLng}\r\n */\r\n add(a: LatLng) {\r\n return new LatLng(this.lat + a.lat, this.lng + a.lng).normalize()\r\n }\r\n\r\n /**\r\n * subtract with another LatLng\r\n * @param a\r\n * @returns {LatLng}\r\n */\r\n subtract(a: LatLng) {\r\n if (!a) {\r\n return this\r\n }\r\n return new LatLng(this.lat - a.lat, this.lng - a.lng).normalize()\r\n }\r\n}\r\n\r\nexport type ILatLng = LatLng | {lat: number, lng: number} | [number, number] | null\r\n","import {Vector2} from \"../engine/Vector2\"\r\nimport {MathUtils} from \"../engine/MathUtils\"\r\nimport { MapConstants, MathConstants } from \"../models/MapConstants\"\r\nimport { LatLng } from \"../models/LatLng\"\r\n\r\nexport class ProjectionMercator {\r\n\r\n /**\r\n * ok for test\r\n * @param latLng\r\n * @param worldSize\r\n */\r\n private static projectInternal(latLng: LatLng, worldSize: number) : Vector2 {\r\n let latitude = MathUtils.clamp(latLng.lat, MapConstants.minLatitude, MapConstants.maxLatitude)\r\n return new Vector2(\r\n MapConstants.maxLongitude + latLng.lng,\r\n MapConstants.maxLongitude - MathConstants.rad2Deg\r\n * Math.log(Math.tan(Math.PI / 4 + latitude * Math.PI / MapConstants.maxDegrees))\r\n ).multiply(worldSize / MapConstants.maxDegrees)\r\n }\r\n\r\n /**\r\n * ok for test\r\n * @param latLng\r\n */\r\n static convertToMeterFromLatLng(latLng: LatLng): Vector2 {\r\n let constrainedLatitude = MathUtils.clamp(latLng.lat, MapConstants.minLatitude, MapConstants.maxLatitude)\r\n let constrainedLongitude = latLng.lng\r\n let m = 1 - 1e-15\r\n let f = MathUtils.clamp(Math.sin(MathConstants.deg2Rad * constrainedLatitude), -m, m)\r\n let easting = MapConstants.radiusEarthMeters * constrainedLongitude * MathConstants.deg2Rad\r\n let northing = 0.5 * MapConstants.radiusEarthMeters * Math.log((1 + f) / (1 - f))\r\n return new Vector2(easting, northing)\r\n }\r\n\r\n /**\r\n * ok for test\r\n * @param meters\r\n */\r\n static convertToLatLngFromMeter(meters: Vector2): LatLng {\r\n let latitude = (2 * Math.atan(Math.exp(meters.y / MapConstants.radiusEarthMeters)) - (Math.PI / 2.0))\r\n * MathConstants.rad2Deg\r\n let longitude = meters.x * MathConstants.rad2Deg / MapConstants.radiusEarthMeters\r\n return new LatLng(latitude, longitude)\r\n }\r\n\r\n /**\r\n * ok for test\r\n * @param latLng\r\n * @param zoom\r\n */\r\n static projectZoom(latLng: LatLng, zoom: number): Vector2 {\r\n return this.projectInternal(latLng, 1 << zoom)\r\n }\r\n\r\n\r\n}\r\n","import { ProjectionMercator } from \"../map/ProjectionMercator\"\r\nimport { MathUtils } from \"../engine/MathUtils\"\r\nimport { Vector2 } from \"../engine/Vector2\"\r\nimport { ILatLng, LatLng } from \"../models/LatLng\"\r\n\r\nexport class CoordinateTransformer {\r\n\r\n private coordinates: LatLng[] = []\r\n\r\n constructor(coordinates: ILatLng[]) {\r\n this.coordinates = coordinates.map(coordinate => LatLng.convert(coordinate))\r\n }\r\n\r\n setCoordinates(coordinates: ILatLng[]): void {\r\n this.coordinates = coordinates.map(coordinate => LatLng.convert(coordinate))\r\n }\r\n\r\n addCoordinates(coordinates: ILatLng[]): void {\r\n coordinates.forEach(coordinate => this.coordinates.push(LatLng.convert(coordinate)))\r\n }\r\n\r\n rotate(degree: number, anchor: ILatLng = null): LatLng[] {\r\n if (this.coordinates.length <= 1) {\r\n return this.coordinates.slice()\r\n }\r\n let center = null\r\n if (anchor != null) {\r\n center = LatLng.convert(center)\r\n }\r\n else {\r\n center = this.center\r\n }\r\n let centerInMeters = ProjectionMercator.convertToMeterFromLatLng(center)\r\n let transformedCoordinates: LatLng[] = []\r\n let degreeInRadians = MathUtils.toRadians(degree)\r\n this.coordinates.forEach(coordinate => {\r\n let point = ProjectionMercator.convertToMeterFromLatLng(coordinate)\r\n point.x -= centerInMeters.x\r\n point.y -= centerInMeters.y\r\n\r\n let x = point.x\r\n let y = point.y\r\n point.x = (x * Math.cos(degreeInRadians) - y * Math.sin(degreeInRadians))\r\n point.y = (x * Math.sin(degreeInRadians) + y * Math.cos(degreeInRadians))\r\n\r\n transformedCoordinates.push(ProjectionMercator.convertToLatLngFromMeter(\r\n new Vector2(centerInMeters.x + point.x, centerInMeters.y + point.y)))\r\n })\r\n return transformedCoordinates\r\n }\r\n\r\n translate(target: ILatLng, anchor: ILatLng = null): LatLng[] {\r\n if (this.coordinates.length <= 0) {\r\n return []\r\n }\r\n let newCenter = LatLng.convert(target)\r\n let oldCenter = null\r\n if (anchor != null) {\r\n oldCenter = LatLng.convert(anchor)\r\n }\r\n else {\r\n oldCenter = this.center\r\n }\r\n\r\n let transformedCoordinates: LatLng[] = []\r\n let translateVectorX = newCenter.lng - oldCenter.lng\r\n let translateVectorY = newCenter.lat - oldCenter.lat\r\n this.coordinates.forEach(coordinate => {\r\n transformedCoordinates.push(new LatLng(coordinate.lat + translateVectorY,\r\n coordinate.lng + translateVectorX))\r\n })\r\n return transformedCoordinates\r\n }\r\n\r\n scale(scale: number, anchor: ILatLng = null): LatLng[] {\r\n if (this.coordinates.length <= 1) {\r\n return this.coordinates.slice()\r\n }\r\n let center = null\r\n if (anchor != null) {\r\n center = LatLng.convert(anchor)\r\n }\r\n else {\r\n center = this.center\r\n }\r\n\r\n let centerInMeters = ProjectionMercator.convertToMeterFromLatLng(center)\r\n let transformedCoordinates: LatLng[] = []\r\n this.coordinates.forEach(coordinate => {\r\n let point = ProjectionMercator.convertToMeterFromLatLng(coordinate)\r\n point.x -= centerInMeters.x\r\n point.y -= centerInMeters.y\r\n point.x *= scale\r\n point.y *= scale\r\n transformedCoordinates.push(ProjectionMercator.convertToLatLngFromMeter(\r\n new Vector2(centerInMeters.x + point.x, centerInMeters.y + point.y)))\r\n })\r\n return transformedCoordinates\r\n }\r\n\r\n get center(): LatLng {\r\n if (this.coordinates.length == 0) {\r\n return null as unknown as LatLng\r\n }\r\n let center = new LatLng(0, 0)\r\n for (let i = 0; i < this.coordinates.length; ++i) {\r\n center.lat += this.coordinates[i].lat\r\n center.lng += this.coordinates[i].lng\r\n }\r\n center.lat /= this.coordinates.length\r\n center.lng /= this.coordinates.length\r\n return center\r\n }\r\n}"],"names":["defaultCt","map","Map4dContext","createContext","markerClusterDefaultContext","addMarker","removeMarker","MarkerClusterContext","MFBuilding","props","position","name","scale","bearing","elevation","height","model","texture","coordinates","visible","draggable","userInteractionEnabled","selected","growUp","onCreated","map4dContext","useContext","theMap","buildingRef","useRef","useEffect","current","length","option","lat","lng","Object","keys","forEach","key","undefined","map4d","Building","setMap","setPosition","setName","setScale","setBearing","setElevation","setHeight","setModel","setTexture","setCoordinates","setVisible","setDraggable","setUserInteraction","setSelected","setGrowUp","MFBuildingOverlay","getUrl","parserData","prefixId","buildingOverlayRef","reCreate","BuildingOverlay","VariableTool","variable","MFCircle","center","radius","fillColor","fillOpacity","strokeColor","strokeWidth","zIndex","circleRef","Circle","hasValue","setCenter","setRadius","setFillColor","setFillOpacity","setStrokeColor","setStrokeWidth","setZIndex","MFDataLayer","geoJsonString","dataLayerRef","feature","data","remove","addGeoJson","MFDirectionsRenderer","routes","activedIndex","activeStrokeWidth","activeStrokeColor","activeOutlineWidth","activeOutlineColor","activeStrokePattern","inactiveStrokeWidth","inactiveStrokeColor","inactiveOutlineWidth","inactiveOutlineColor","inactiveStrokePattern","originMarkerOptions","destinationMarkerOptions","waypointMarkerOptions","onMarkerDragEnd","onHover","onMouseOut","onMouseOver","onMouseMove","directionRef","DirectionsRenderer","setRoutes","setActivedIndex","setActiveStrokePattern","setInactiveStrokePattern","setOptions","MFGroundOverlay","bounds","override","opacity","groundOverlayRef","TileOverlay","setOpacity","MFImageOverlay","url","imageOverlayRef","ImageOverlay","addLibrary","id","scriptId","exist","document","getElementById","script","createElement","src","defer","body","appendChild","createId","dt","Date","getTime","uuid","replace","c","r","Math","random","floor","toString","MFMap","callback","mapDomRef","mapRef","scriptElement","events","useState","createCallback","window","options","Map","onMapReady","registerEvent","domain","environment","sdkDomain","urlNew","version","accessKey","mapid","destroy","t","mapType","setMapType","camera","getCamera","setTarget","moveCamera","eventClickMarker","addListener","args","marker","onClick","eventRightClickMarker","onRightClick","eventDragEndMarker","onDragEnd","eventHoverMarker","eventHoverPolygon","polygon","eventHoverPolyline","polyline","eventHoverDirection","renderer","directions","eventClickPolyline","eventMouseOutDirection","eventMouseOverDirection","eventMouseMoveDirection","eventMouseOutPolyline","eventMouseOverPolyline","eventMouseMovePolyline","eventMouseOutMarker","eventMouseOverMarker","eventMouseMoveMarker","eventClickPoi","poi","eventHoverPoi","concat","onClickLocation","location","push","onRightClickLocation","onTilesLoaded","onCameraChanging","newContext","React","Fragment","style","width","display","ref","Provider","value","children","MFMarker","anchor","labelAnchor","icon","rotation","title","snippet","windowAnchor","label","iconView","markerClusterContext","markerRef","iconT","Icon","Marker","infoWindow","setInfoWindow","infoContents","setInfoContents","showInfoWindow","hideInfoWindow","setAnchor","setLabelAnchor","setIcon","setRotation","setTitle","setSnippet","setWindowAnchor","setLabel","setIconView","MFMarkerCluster","minZoom","maxZoom","zoomOnClick","markerRefs","markerClusterRef","drawCluster","MarkerClusterer","clusterContext","newMarkers","filter","setZoomOnClick","MFPOI","subtitle","color","type","poiRef","POI","setSubtitle","setColor","setType","MFPOIOverlay","poiOverlayRef","POIOverlay","MFPolygon","paths","polygonRef","a","Polygon","console","log","getMap","setPaths","MFPolyline","path","strokeOpacity","closed","strokePattern","polylineRef","Polyline","setPath","setStrokeOpacity","setClosed","setStrokePattern","MFTileOverlay","tileOverlayRef","Vector2","x","y","clone","normalize","set","invert","rotate90","add","subtract","multiply","rotateBy","cos","PI","sin","rotateByRadian","cross","dot","perp","v1","v2","neg","v","sqrt","MathUtils","clamp","min","max","toRadians","angleDegrees","distance","p1","p2","findNextPowerOf2","n","lg","log2","findPreviousPowerOf2","clz32","Vector3","z","buffer","Float32Array","Matrix4","setIdentity","copy","other","translate","rotateX","alpha","sinA","cosA","setRotationX","r1","r2","rotateY","setRotationY","r0","rotateZ","setRotationZ","matrix","result","i","j","k","ortho","left","right","bottom","top","near","far","setOrtho","perspective","fov","aspect","tan","frustum","setPerspective","setFrustum","transform","vector","w","inverse","rows","cols","A","slice","B","Ac","Ar","Bc","Br","f","s","Color","red","green","blue","_buffer","rgbBuffer","fromHex","hexString","substring","split","join","colorCode","parseInt","fromInt","fromVec3","mix","b","factor","isValid","colorString","test","float2hex","hex","substr","MapConstants","CameraConstants","MathConstants","rad2Deg","radiusEarthMeters","halfEarthCircumFerenceInMeter","Number","MIN_SAFE_INTEGER","deg2Rad","ColorConstants","getSkyColor","skyColors","getFogColor","fogColors","getLightColor","lightColors","ClassType","Map4dObject","classType","isClassType","mapObject","mfClassType","LatLng","LATLNG","equals","valid","isFinite","abs","convert","input","Array","isArray","Error","distanceTo","target","desc","latStartRadian","longStartRadian","latDescRadian","longDescRadian","u","asin","sign","ProjectionMercator","projectInternal","latLng","worldSize","latitude","minLatitude","maxLatitude","maxLongitude","maxDegrees","convertToMeterFromLatLng","constrainedLatitude","constrainedLongitude","m","easting","northing","convertToLatLngFromMeter","meters","atan","exp","longitude","projectZoom","zoom","CoordinateTransformer","coordinate","addCoordinates","rotate","degree","centerInMeters","transformedCoordinates","degreeInRadians","point","newCenter","oldCenter","translateVectorX","translateVectorY"],"mappings":"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"}
|