@react-google-maps/api
Version:
React.js Google Maps API integration
59 lines (47 loc) • 1.3 kB
text/typescript
import invariant from 'invariant'
export interface LoadScriptUrlOptions {
googleMapsApiKey?: string
googleMapsClientId?: string
version?: string
language?: string
region?: string
libraries?: string[]
channel?: string
}
export function makeLoadScriptUrl({
googleMapsApiKey,
googleMapsClientId,
version = 'weekly',
language,
region,
libraries,
channel,
}: LoadScriptUrlOptions) {
const params = []
invariant(
(googleMapsApiKey && googleMapsClientId) || !(googleMapsApiKey && googleMapsClientId),
'You need to specify either googleMapsApiKey or googleMapsClientId for @react-google-maps/api load script to work. You cannot use both at the same time.'
)
if (googleMapsApiKey) {
params.push(`key=${googleMapsApiKey}`)
} else if (googleMapsClientId) {
params.push(`client=${googleMapsClientId}`)
}
if (version) {
params.push(`v=${version}`)
}
if (language) {
params.push(`language=${language}`)
}
if (region) {
params.push(`region=${region}`)
}
if (libraries && libraries.length) {
params.push(`libraries=${libraries.sort().join(',')}`)
}
if (channel) {
params.push(`channel=${channel}`)
}
params.push('callback=initMap')
return `https://maps.googleapis.com/maps/api/js?${params.join('&')}`
}