react-map4d-map 1.2.7 → 1.2.8
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/components/MFBuilding.d.ts +1 -1
- package/dist/components/MFBuildingOverlay.d.ts +1 -1
- package/dist/components/MFCircle.d.ts +1 -1
- package/dist/components/MFDataLayer.d.ts +1 -1
- package/dist/components/MFDirectionsRenderer.d.ts +1 -1
- package/dist/components/MFGroundOverlay.d.ts +1 -1
- package/dist/components/MFImageOverlay.d.ts +1 -1
- package/dist/components/MFMap.d.ts +1 -1
- package/dist/components/MFMarker.d.ts +1 -1
- package/dist/components/MFPOI.d.ts +1 -1
- package/dist/components/MFPOIOverlay.d.ts +1 -1
- package/dist/components/MFPolygon.d.ts +1 -1
- package/dist/components/MFPolyline.d.ts +1 -1
- package/dist/components/MFTileOverlay.d.ts +1 -1
- package/dist/index.js +35 -28
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +35 -28
- package/dist/index.modern.js.map +1 -1
- package/package.json +1 -1
- package/dist/index.css +0 -9
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.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 }\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 }, [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, props.options])\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 }\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\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 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 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 }\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 }\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","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","Polygon","setPaths","MFPolyline","path","strokeOpacity","closed","strokePattern","polylineRef","Polyline","setPath","setStrokeOpacity","setClosed","setStrokePattern","MFTileOverlay","tileOverlayRef","Vector2","x","y","clone","normalize","set","a","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","console","log","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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"}
|
|
1
|
+
{"version":3,"file":"index.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 }, [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, props.options])\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 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\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 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 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","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","Polygon","setPaths","MFPolyline","path","strokeOpacity","closed","strokePattern","polylineRef","Polyline","setPath","setStrokeOpacity","setClosed","setStrokePattern","MFTileOverlay","tileOverlayRef","Vector2","x","y","clone","normalize","set","a","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","console","log","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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"}
|