UNPKG

@syncromatics/react-google-maps

Version:
109 lines (94 loc) 2.65 kB
"use strict" Object.defineProperty(exports, "__esModule", { value: true, }) var _isFunction2 = require("lodash/isFunction") var _isFunction3 = _interopRequireDefault(_isFunction2) exports.getOffsetOverride = getOffsetOverride exports.getLayoutStyles = getLayoutStyles function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } } /* global google */ function getOffsetOverride(containerElement, props) { var getPixelPositionOffset = props.getPixelPositionOffset, pixelPositionOffset = props.pixelPositionOffset // // Allows the component to control the visual position of the OverlayView // relative to the LatLng pixel position. // if (pixelPositionOffset) { return pixelPositionOffset } else if ((0, _isFunction3.default)(getPixelPositionOffset)) { return getPixelPositionOffset( containerElement.offsetWidth, containerElement.offsetHeight ) } else { return {} } } function createLatLng(inst, Type) { return new Type(inst.lat, inst.lng) } function createLatLngBounds(inst, Type) { return new Type( new google.maps.LatLng(inst.ne.lat, inst.ne.lng), new google.maps.LatLng(inst.sw.lat, inst.sw.lng) ) } function ensureOfType(inst, type, factory) { if (inst instanceof type) { return inst } else { return factory(inst, type) } } function getLayoutStylesByBounds(mapCanvasProjection, offset, bounds) { var ne = mapCanvasProjection.fromLatLngToDivPixel(bounds.getNorthEast()) var sw = mapCanvasProjection.fromLatLngToDivPixel(bounds.getSouthWest()) if (ne && sw) { return { left: sw.x + offset.x + "px", top: ne.y + offset.y + "px", width: ne.x - sw.x - offset.x + "px", height: sw.y - ne.y - offset.y + "px", } } return { left: "-9999px", top: "-9999px", } } function getLayoutStylesByPosition(mapCanvasProjection, offset, position) { var point = mapCanvasProjection.fromLatLngToDivPixel(position) if (point) { var x = point.x, y = point.y return { left: x + offset.x + "px", top: y + offset.y + "px", } } return { left: "-9999px", top: "-9999px", } } function getLayoutStyles(mapCanvasProjection, offset, props) { if (props.bounds) { var bounds = ensureOfType( props.bounds, google.maps.LatLngBounds, createLatLngBounds ) return getLayoutStylesByBounds(mapCanvasProjection, offset, bounds) } else { var position = ensureOfType( props.position, google.maps.LatLng, createLatLng ) return getLayoutStylesByPosition(mapCanvasProjection, offset, position) } }