@zurigo/maps 1.0.0 → 1.0.2
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/error-display.d.ts +33 -0
- package/dist/components/error-display.d.ts.map +1 -0
- package/dist/components/error-display.js +188 -0
- package/dist/components/error-display.js.map +1 -0
- package/dist/components/google-maps.d.ts +31 -0
- package/dist/components/google-maps.d.ts.map +1 -0
- package/dist/components/google-maps.js +1709 -0
- package/dist/components/google-maps.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/google-maps/china-fallback.d.ts +64 -0
- package/dist/lib/google-maps/china-fallback.d.ts.map +1 -0
- package/dist/lib/google-maps/china-fallback.js +212 -0
- package/dist/lib/google-maps/china-fallback.js.map +1 -0
- package/dist/lib/google-maps/config.d.ts +51 -0
- package/dist/lib/google-maps/config.d.ts.map +1 -0
- package/dist/lib/google-maps/config.js +73 -0
- package/dist/lib/google-maps/config.js.map +1 -0
- package/dist/lib/google-maps/error-handler.d.ts +30 -0
- package/dist/lib/google-maps/error-handler.d.ts.map +1 -0
- package/dist/lib/google-maps/error-handler.js +224 -0
- package/dist/lib/google-maps/error-handler.js.map +1 -0
- package/dist/lib/google-maps/geocoding-service.d.ts +47 -0
- package/dist/lib/google-maps/geocoding-service.d.ts.map +1 -0
- package/dist/lib/google-maps/geocoding-service.js +224 -0
- package/dist/lib/google-maps/geocoding-service.js.map +1 -0
- package/dist/lib/google-maps/hooks.d.ts +35 -0
- package/dist/lib/google-maps/hooks.d.ts.map +1 -0
- package/dist/lib/google-maps/hooks.js +207 -0
- package/dist/lib/google-maps/hooks.js.map +1 -0
- package/dist/lib/google-maps/index.d.ts +7 -0
- package/dist/lib/google-maps/index.d.ts.map +1 -0
- package/dist/lib/google-maps/index.js +23 -0
- package/dist/lib/google-maps/index.js.map +1 -0
- package/dist/lib/google-maps/types.d.ts +96 -0
- package/dist/lib/google-maps/types.d.ts.map +1 -0
- package/dist/lib/google-maps/types.js +41 -0
- package/dist/lib/google-maps/types.js.map +1 -0
- package/dist/lib/google-maps/utils.d.ts +20 -0
- package/dist/lib/google-maps/utils.d.ts.map +1 -0
- package/dist/lib/google-maps/utils.js +176 -0
- package/dist/lib/google-maps/utils.js.map +1 -0
- package/dist/lib/solar-panel/constraints.d.ts +62 -0
- package/dist/lib/solar-panel/constraints.d.ts.map +1 -0
- package/dist/lib/solar-panel/constraints.js +166 -0
- package/dist/lib/solar-panel/constraints.js.map +1 -0
- package/dist/lib/solar-panel/orientation.d.ts +56 -0
- package/dist/lib/solar-panel/orientation.d.ts.map +1 -0
- package/dist/lib/solar-panel/orientation.js +255 -0
- package/dist/lib/solar-panel/orientation.js.map +1 -0
- package/dist/lib/solar-panel-calculator.d.ts +126 -0
- package/dist/lib/solar-panel-calculator.d.ts.map +1 -0
- package/dist/lib/solar-panel-calculator.js +450 -0
- package/dist/lib/solar-panel-calculator.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
4
|
+
var t = {};
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
8
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
9
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
10
|
+
t[p[i]] = s[p[i]];
|
|
11
|
+
}
|
|
12
|
+
return t;
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.useGeocode = exports.useGoogleMap = exports.useGoogleMaps = void 0;
|
|
16
|
+
const js_api_loader_1 = require("@googlemaps/js-api-loader");
|
|
17
|
+
const react_1 = require("react");
|
|
18
|
+
const config_1 = require("./config");
|
|
19
|
+
// Global loader instance to prevent multiple loaders with different options
|
|
20
|
+
let globalLoader = null;
|
|
21
|
+
let globalLoadPromise = null;
|
|
22
|
+
let isGlobalLoaded = false;
|
|
23
|
+
const initializeGlobalLoader = () => {
|
|
24
|
+
if (globalLoader)
|
|
25
|
+
return globalLoader;
|
|
26
|
+
if (!(0, config_1.validateApiKey)()) {
|
|
27
|
+
throw new Error('Google Maps API key is not configured');
|
|
28
|
+
}
|
|
29
|
+
globalLoader = new js_api_loader_1.Loader({
|
|
30
|
+
apiKey: config_1.GOOGLE_MAPS_CONFIG.apiKey,
|
|
31
|
+
version: 'weekly',
|
|
32
|
+
libraries: [...config_1.GOOGLE_MAPS_CONFIG.libraries],
|
|
33
|
+
language: config_1.GOOGLE_MAPS_CONFIG.language,
|
|
34
|
+
region: config_1.GOOGLE_MAPS_CONFIG.region,
|
|
35
|
+
});
|
|
36
|
+
return globalLoader;
|
|
37
|
+
};
|
|
38
|
+
const useGoogleMaps = (options = {}) => {
|
|
39
|
+
const [isLoaded, setIsLoaded] = (0, react_1.useState)(isGlobalLoaded);
|
|
40
|
+
const [isLoading, setIsLoading] = (0, react_1.useState)(false);
|
|
41
|
+
const [error, setError] = (0, react_1.useState)(null);
|
|
42
|
+
const { onLoad, onError } = options;
|
|
43
|
+
(0, react_1.useEffect)(() => {
|
|
44
|
+
var _a;
|
|
45
|
+
// If already loaded globally, just call onLoad
|
|
46
|
+
if (isGlobalLoaded && ((_a = window.google) === null || _a === void 0 ? void 0 : _a.maps)) {
|
|
47
|
+
setIsLoaded(true);
|
|
48
|
+
onLoad === null || onLoad === void 0 ? void 0 : onLoad();
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
// If loading is already in progress, wait for it
|
|
52
|
+
if (globalLoadPromise) {
|
|
53
|
+
setIsLoading(true);
|
|
54
|
+
globalLoadPromise
|
|
55
|
+
.then(() => {
|
|
56
|
+
isGlobalLoaded = true;
|
|
57
|
+
setIsLoaded(true);
|
|
58
|
+
setIsLoading(false);
|
|
59
|
+
onLoad === null || onLoad === void 0 ? void 0 : onLoad();
|
|
60
|
+
})
|
|
61
|
+
.catch((err) => {
|
|
62
|
+
const loadError = err instanceof Error ? err : new Error('Failed to load Google Maps');
|
|
63
|
+
setError(loadError);
|
|
64
|
+
setIsLoading(false);
|
|
65
|
+
onError === null || onError === void 0 ? void 0 : onError(loadError);
|
|
66
|
+
});
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
// Initialize and start loading
|
|
70
|
+
try {
|
|
71
|
+
const loader = initializeGlobalLoader();
|
|
72
|
+
setIsLoading(true);
|
|
73
|
+
setError(null);
|
|
74
|
+
// Store the promise globally
|
|
75
|
+
globalLoadPromise = loader.load();
|
|
76
|
+
globalLoadPromise
|
|
77
|
+
.then(() => {
|
|
78
|
+
isGlobalLoaded = true;
|
|
79
|
+
setIsLoaded(true);
|
|
80
|
+
setIsLoading(false);
|
|
81
|
+
onLoad === null || onLoad === void 0 ? void 0 : onLoad();
|
|
82
|
+
})
|
|
83
|
+
.catch((err) => {
|
|
84
|
+
const loadError = err instanceof Error ? err : new Error('Failed to load Google Maps');
|
|
85
|
+
setError(loadError);
|
|
86
|
+
setIsLoading(false);
|
|
87
|
+
onError === null || onError === void 0 ? void 0 : onError(loadError);
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
const initError = err instanceof Error
|
|
92
|
+
? err
|
|
93
|
+
: new Error('Failed to initialize Google Maps loader');
|
|
94
|
+
setError(initError);
|
|
95
|
+
onError === null || onError === void 0 ? void 0 : onError(initError);
|
|
96
|
+
}
|
|
97
|
+
}, [onLoad, onError]);
|
|
98
|
+
return {
|
|
99
|
+
isLoaded,
|
|
100
|
+
isLoading,
|
|
101
|
+
error,
|
|
102
|
+
loader: globalLoader,
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
exports.useGoogleMaps = useGoogleMaps;
|
|
106
|
+
const useGoogleMap = (containerRef, options = {}) => {
|
|
107
|
+
const [map, setMap] = (0, react_1.useState)(null);
|
|
108
|
+
const { isLoaded, error: mapsError } = (0, exports.useGoogleMaps)();
|
|
109
|
+
const [mapError, setMapError] = (0, react_1.useState)(null);
|
|
110
|
+
const { onMapLoad, onMapError } = options, mapOptions = __rest(options, ["onMapLoad", "onMapError"]);
|
|
111
|
+
(0, react_1.useEffect)(() => {
|
|
112
|
+
if (!isLoaded || !containerRef.current || map)
|
|
113
|
+
return;
|
|
114
|
+
try {
|
|
115
|
+
const googleMap = new google.maps.Map(containerRef.current, Object.assign(Object.assign({ center: config_1.GOOGLE_MAPS_CONFIG.china.center, zoom: config_1.GOOGLE_MAPS_CONFIG.china.zoom.default }, config_1.GOOGLE_MAPS_CONFIG.mapOptions), mapOptions));
|
|
116
|
+
setMap(googleMap);
|
|
117
|
+
onMapLoad === null || onMapLoad === void 0 ? void 0 : onMapLoad(googleMap);
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
const error = err instanceof Error ? err : new Error('Failed to create map');
|
|
121
|
+
setMapError(error);
|
|
122
|
+
onMapError === null || onMapError === void 0 ? void 0 : onMapError(error);
|
|
123
|
+
}
|
|
124
|
+
}, [isLoaded, containerRef, map, mapOptions, onMapLoad, onMapError]);
|
|
125
|
+
return {
|
|
126
|
+
map,
|
|
127
|
+
isLoaded,
|
|
128
|
+
error: mapsError || mapError,
|
|
129
|
+
};
|
|
130
|
+
};
|
|
131
|
+
exports.useGoogleMap = useGoogleMap;
|
|
132
|
+
const useGeocode = () => {
|
|
133
|
+
const { isLoaded } = (0, exports.useGoogleMaps)();
|
|
134
|
+
const [isGeocoding, setIsGeocoding] = (0, react_1.useState)(false);
|
|
135
|
+
const [error, setError] = (0, react_1.useState)(null);
|
|
136
|
+
const geocodeAddress = (0, react_1.useCallback)(async (address, options) => {
|
|
137
|
+
var _a;
|
|
138
|
+
if (!isLoaded || !((_a = window.google) === null || _a === void 0 ? void 0 : _a.maps)) {
|
|
139
|
+
throw new Error('Google Maps not loaded');
|
|
140
|
+
}
|
|
141
|
+
if (!address.trim()) {
|
|
142
|
+
throw new Error('Address is required');
|
|
143
|
+
}
|
|
144
|
+
setIsGeocoding(true);
|
|
145
|
+
setError(null);
|
|
146
|
+
try {
|
|
147
|
+
const geocoder = new google.maps.Geocoder();
|
|
148
|
+
const response = await geocoder.geocode({
|
|
149
|
+
address,
|
|
150
|
+
region: config_1.GOOGLE_MAPS_CONFIG.geocoding.region,
|
|
151
|
+
language: config_1.GOOGLE_MAPS_CONFIG.geocoding.language,
|
|
152
|
+
});
|
|
153
|
+
if (response.results.length === 0) {
|
|
154
|
+
throw new Error('No results found for the provided address');
|
|
155
|
+
}
|
|
156
|
+
return response.results;
|
|
157
|
+
}
|
|
158
|
+
catch (err) {
|
|
159
|
+
const error = err instanceof Error ? err : new Error('Geocoding failed');
|
|
160
|
+
setError(error);
|
|
161
|
+
throw error;
|
|
162
|
+
}
|
|
163
|
+
finally {
|
|
164
|
+
setIsGeocoding(false);
|
|
165
|
+
}
|
|
166
|
+
}, [isLoaded]);
|
|
167
|
+
const reverseGeocode = (0, react_1.useCallback)(async (lat, lng) => {
|
|
168
|
+
var _a;
|
|
169
|
+
if (!isLoaded || !((_a = window.google) === null || _a === void 0 ? void 0 : _a.maps)) {
|
|
170
|
+
throw new Error('Google Maps not loaded');
|
|
171
|
+
}
|
|
172
|
+
setIsGeocoding(true);
|
|
173
|
+
setError(null);
|
|
174
|
+
try {
|
|
175
|
+
const geocoder = new google.maps.Geocoder();
|
|
176
|
+
const response = await geocoder.geocode({
|
|
177
|
+
location: { lat, lng },
|
|
178
|
+
language: config_1.GOOGLE_MAPS_CONFIG.geocoding.language,
|
|
179
|
+
});
|
|
180
|
+
if (response.results.length === 0) {
|
|
181
|
+
throw new Error('No results found for the provided coordinates');
|
|
182
|
+
}
|
|
183
|
+
return response.results;
|
|
184
|
+
}
|
|
185
|
+
catch (err) {
|
|
186
|
+
const error = err instanceof Error ? err : new Error('Reverse geocoding failed');
|
|
187
|
+
setError(error);
|
|
188
|
+
throw error;
|
|
189
|
+
}
|
|
190
|
+
finally {
|
|
191
|
+
setIsGeocoding(false);
|
|
192
|
+
}
|
|
193
|
+
}, [isLoaded]);
|
|
194
|
+
const clearError = (0, react_1.useCallback)(() => {
|
|
195
|
+
setError(null);
|
|
196
|
+
}, []);
|
|
197
|
+
return {
|
|
198
|
+
geocodeAddress,
|
|
199
|
+
reverseGeocode,
|
|
200
|
+
isGeocoding,
|
|
201
|
+
isReady: isLoaded,
|
|
202
|
+
error,
|
|
203
|
+
clearError,
|
|
204
|
+
};
|
|
205
|
+
};
|
|
206
|
+
exports.useGeocode = useGeocode;
|
|
207
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/lib/google-maps/hooks.ts"],"names":[],"mappings":";AAAA,YAAY,CAAA;;;;;;;;;;;;;;AAEZ,6DAAkD;AAClD,iCAAgE;AAChE,qCAIiB;AAOjB,4EAA4E;AAC5E,IAAI,YAAY,GAAkB,IAAI,CAAA;AACtC,IAAI,iBAAiB,GAAkC,IAAI,CAAA;AAC3D,IAAI,cAAc,GAAG,KAAK,CAAA;AAe1B,MAAM,sBAAsB,GAAG,GAAG,EAAE;IAClC,IAAI,YAAY;QAAE,OAAO,YAAY,CAAA;IAErC,IAAI,CAAC,IAAA,uBAAc,GAAE,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;IAC1D,CAAC;IAED,YAAY,GAAG,IAAI,sBAAM,CAAC;QACxB,MAAM,EAAE,2BAAkB,CAAC,MAAM;QACjC,OAAO,EAAE,QAAQ;QACjB,SAAS,EAAE,CAAC,GAAG,2BAAkB,CAAC,SAAS,CAAC;QAC5C,QAAQ,EAAE,2BAAkB,CAAC,QAAQ;QACrC,MAAM,EAAE,2BAAkB,CAAC,MAAM;KAClC,CAAC,CAAA;IAEF,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA;AAEM,MAAM,aAAa,GAAG,CAC3B,UAAgC,EAAE,EACb,EAAE;IACvB,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,cAAc,CAAC,CAAA;IACxD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAA;IACjD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAe,IAAI,CAAC,CAAA;IAEtD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;IAEnC,IAAA,iBAAS,EAAC,GAAG,EAAE;;QACb,+CAA+C;QAC/C,IAAI,cAAc,KAAI,MAAA,MAAM,CAAC,MAAM,0CAAE,IAAI,CAAA,EAAE,CAAC;YAC1C,WAAW,CAAC,IAAI,CAAC,CAAA;YACjB,MAAM,aAAN,MAAM,uBAAN,MAAM,EAAI,CAAA;YACV,OAAM;QACR,CAAC;QAED,iDAAiD;QACjD,IAAI,iBAAiB,EAAE,CAAC;YACtB,YAAY,CAAC,IAAI,CAAC,CAAA;YAClB,iBAAiB;iBACd,IAAI,CAAC,GAAG,EAAE;gBACT,cAAc,GAAG,IAAI,CAAA;gBACrB,WAAW,CAAC,IAAI,CAAC,CAAA;gBACjB,YAAY,CAAC,KAAK,CAAC,CAAA;gBACnB,MAAM,aAAN,MAAM,uBAAN,MAAM,EAAI,CAAA;YACZ,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACb,MAAM,SAAS,GACb,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;gBACtE,QAAQ,CAAC,SAAS,CAAC,CAAA;gBACnB,YAAY,CAAC,KAAK,CAAC,CAAA;gBACnB,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,SAAS,CAAC,CAAA;YACtB,CAAC,CAAC,CAAA;YACJ,OAAM;QACR,CAAC;QAED,+BAA+B;QAC/B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,sBAAsB,EAAE,CAAA;YACvC,YAAY,CAAC,IAAI,CAAC,CAAA;YAClB,QAAQ,CAAC,IAAI,CAAC,CAAA;YAEd,6BAA6B;YAC7B,iBAAiB,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;YAEjC,iBAAiB;iBACd,IAAI,CAAC,GAAG,EAAE;gBACT,cAAc,GAAG,IAAI,CAAA;gBACrB,WAAW,CAAC,IAAI,CAAC,CAAA;gBACjB,YAAY,CAAC,KAAK,CAAC,CAAA;gBACnB,MAAM,aAAN,MAAM,uBAAN,MAAM,EAAI,CAAA;YACZ,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACb,MAAM,SAAS,GACb,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;gBACtE,QAAQ,CAAC,SAAS,CAAC,CAAA;gBACnB,YAAY,CAAC,KAAK,CAAC,CAAA;gBACnB,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,SAAS,CAAC,CAAA;YACtB,CAAC,CAAC,CAAA;QACN,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,SAAS,GACb,GAAG,YAAY,KAAK;gBAClB,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;YAC1D,QAAQ,CAAC,SAAS,CAAC,CAAA;YACnB,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,SAAS,CAAC,CAAA;QACtB,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAErB,OAAO;QACL,QAAQ;QACR,SAAS;QACT,KAAK;QACL,MAAM,EAAE,YAAY;KACrB,CAAA;AACH,CAAC,CAAA;AA5EY,QAAA,aAAa,iBA4EzB;AAOM,MAAM,YAAY,GAAG,CAC1B,YAAiD,EACjD,UAA+B,EAAE,EACjC,EAAE;IACF,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAA,gBAAQ,EAAyB,IAAI,CAAC,CAAA;IAC5D,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAA,qBAAa,GAAE,CAAA;IACtD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAe,IAAI,CAAC,CAAA;IAE5D,MAAM,EAAE,SAAS,EAAE,UAAU,KAAoB,OAAO,EAAtB,UAAU,UAAK,OAAO,EAAlD,2BAAwC,CAAU,CAAA;IAExD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,GAAG;YAAE,OAAM;QAErD,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,gCACxD,MAAM,EAAE,2BAAkB,CAAC,KAAK,CAAC,MAAM,EACvC,IAAI,EAAE,2BAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,IACxC,2BAAkB,CAAC,UAAU,GAC7B,UAAU,EACb,CAAA;YAEF,MAAM,CAAC,SAAS,CAAC,CAAA;YACjB,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAG,SAAS,CAAC,CAAA;QACxB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,KAAK,GACT,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;YAChE,WAAW,CAAC,KAAK,CAAC,CAAA;YAClB,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,KAAK,CAAC,CAAA;QACrB,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAA;IAEpE,OAAO;QACL,GAAG;QACH,QAAQ;QACR,KAAK,EAAE,SAAS,IAAI,QAAQ;KAC7B,CAAA;AACH,CAAC,CAAA;AApCY,QAAA,YAAY,gBAoCxB;AAEM,MAAM,UAAU,GAAG,GAAG,EAAE;IAC7B,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,qBAAa,GAAE,CAAA;IACpC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAA;IACrD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAe,IAAI,CAAC,CAAA;IAEtD,MAAM,cAAc,GAAG,IAAA,mBAAW,EAChC,KAAK,EACH,OAAe,EACf,OAAgC,EACO,EAAE;;QACzC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,IAAI,CAAA,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAC3C,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;QACxC,CAAC;QAED,cAAc,CAAC,IAAI,CAAC,CAAA;QACpB,QAAQ,CAAC,IAAI,CAAC,CAAA;QAEd,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAA;YAC3C,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;gBACtC,OAAO;gBACP,MAAM,EAAE,2BAAkB,CAAC,SAAS,CAAC,MAAM;gBAC3C,QAAQ,EAAE,2BAAkB,CAAC,SAAS,CAAC,QAAQ;aAChD,CAAC,CAAA;YAEF,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;YAC9D,CAAC;YAED,OAAO,QAAQ,CAAC,OAAO,CAAA;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;YACxE,QAAQ,CAAC,KAAK,CAAC,CAAA;YACf,MAAM,KAAK,CAAA;QACb,CAAC;gBAAS,CAAC;YACT,cAAc,CAAC,KAAK,CAAC,CAAA;QACvB,CAAC;IACH,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAA;IAED,MAAM,cAAc,GAAG,IAAA,mBAAW,EAChC,KAAK,EAAE,GAAW,EAAE,GAAW,EAAyC,EAAE;;QACxE,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,IAAI,CAAA,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAC3C,CAAC;QAED,cAAc,CAAC,IAAI,CAAC,CAAA;QACpB,QAAQ,CAAC,IAAI,CAAC,CAAA;QAEd,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAA;YAC3C,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;gBACtC,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;gBACtB,QAAQ,EAAE,2BAAkB,CAAC,SAAS,CAAC,QAAQ;aAChD,CAAC,CAAA;YAEF,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;YAClE,CAAC;YAED,OAAO,QAAQ,CAAC,OAAO,CAAA;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,KAAK,GACT,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;YACpE,QAAQ,CAAC,KAAK,CAAC,CAAA;YACf,MAAM,KAAK,CAAA;QACb,CAAC;gBAAS,CAAC;YACT,cAAc,CAAC,KAAK,CAAC,CAAA;QACvB,CAAC;IACH,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAA;IAED,MAAM,UAAU,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QAClC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAChB,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO;QACL,cAAc;QACd,cAAc;QACd,WAAW;QACX,OAAO,EAAE,QAAQ;QACjB,KAAK;QACL,UAAU;KACX,CAAA;AACH,CAAC,CAAA;AA1FY,QAAA,UAAU,cA0FtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/google-maps/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./config"), exports);
|
|
18
|
+
__exportStar(require("./hooks"), exports);
|
|
19
|
+
__exportStar(require("./types"), exports);
|
|
20
|
+
__exportStar(require("./utils"), exports);
|
|
21
|
+
__exportStar(require("./error-handler"), exports);
|
|
22
|
+
__exportStar(require("./geocoding-service"), exports);
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/google-maps/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,0CAAuB;AACvB,0CAAuB;AACvB,0CAAuB;AACvB,kDAA+B;AAC/B,sDAAmC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
export interface ChineseAddress {
|
|
2
|
+
province: string;
|
|
3
|
+
city: string;
|
|
4
|
+
district: string;
|
|
5
|
+
street: string;
|
|
6
|
+
fullAddress: string;
|
|
7
|
+
formattedAddress?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface GeocodeResult {
|
|
10
|
+
address: ChineseAddress;
|
|
11
|
+
coordinates: {
|
|
12
|
+
lat: number;
|
|
13
|
+
lng: number;
|
|
14
|
+
};
|
|
15
|
+
placeId: string;
|
|
16
|
+
types: string[];
|
|
17
|
+
viewport?: {
|
|
18
|
+
northeast: {
|
|
19
|
+
lat: number;
|
|
20
|
+
lng: number;
|
|
21
|
+
};
|
|
22
|
+
southwest: {
|
|
23
|
+
lat: number;
|
|
24
|
+
lng: number;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export interface GeocodingError {
|
|
29
|
+
code: 'ZERO_RESULTS' | 'OVER_QUERY_LIMIT' | 'REQUEST_DENIED' | 'INVALID_REQUEST' | 'UNKNOWN_ERROR';
|
|
30
|
+
message: string;
|
|
31
|
+
status: google.maps.GeocoderStatus;
|
|
32
|
+
}
|
|
33
|
+
export interface MapBounds {
|
|
34
|
+
north: number;
|
|
35
|
+
south: number;
|
|
36
|
+
east: number;
|
|
37
|
+
west: number;
|
|
38
|
+
}
|
|
39
|
+
export interface AddressComponent {
|
|
40
|
+
longName: string;
|
|
41
|
+
shortName: string;
|
|
42
|
+
types: string[];
|
|
43
|
+
}
|
|
44
|
+
export interface AddressValidationResult {
|
|
45
|
+
isValid: boolean;
|
|
46
|
+
errors: string[];
|
|
47
|
+
suggestions?: string[];
|
|
48
|
+
confidence: number;
|
|
49
|
+
}
|
|
50
|
+
export interface ChinaMapRegion {
|
|
51
|
+
name: string;
|
|
52
|
+
code: string;
|
|
53
|
+
bounds: MapBounds;
|
|
54
|
+
center: {
|
|
55
|
+
lat: number;
|
|
56
|
+
lng: number;
|
|
57
|
+
};
|
|
58
|
+
zoom: number;
|
|
59
|
+
}
|
|
60
|
+
export declare const CHINA_REGIONS: ChinaMapRegion[];
|
|
61
|
+
export interface PlacesSearchOptions {
|
|
62
|
+
query: string;
|
|
63
|
+
location?: {
|
|
64
|
+
lat: number;
|
|
65
|
+
lng: number;
|
|
66
|
+
};
|
|
67
|
+
radius?: number;
|
|
68
|
+
types?: string[];
|
|
69
|
+
language?: string;
|
|
70
|
+
region?: string;
|
|
71
|
+
}
|
|
72
|
+
export interface PlacesSearchResult {
|
|
73
|
+
placeId: string;
|
|
74
|
+
name: string;
|
|
75
|
+
formattedAddress: string;
|
|
76
|
+
geometry: {
|
|
77
|
+
location: {
|
|
78
|
+
lat: number;
|
|
79
|
+
lng: number;
|
|
80
|
+
};
|
|
81
|
+
viewport?: {
|
|
82
|
+
northeast: {
|
|
83
|
+
lat: number;
|
|
84
|
+
lng: number;
|
|
85
|
+
};
|
|
86
|
+
southwest: {
|
|
87
|
+
lat: number;
|
|
88
|
+
lng: number;
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
types: string[];
|
|
93
|
+
rating?: number;
|
|
94
|
+
priceLevel?: number;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/google-maps/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CHINA_REGIONS = void 0;
|
|
4
|
+
exports.CHINA_REGIONS = [
|
|
5
|
+
{
|
|
6
|
+
name: '北京市',
|
|
7
|
+
code: 'BJ',
|
|
8
|
+
bounds: { north: 41.05, south: 39.44, east: 117.51, west: 115.42 },
|
|
9
|
+
center: { lat: 39.9042, lng: 116.4074 },
|
|
10
|
+
zoom: 10,
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
name: '上海市',
|
|
14
|
+
code: 'SH',
|
|
15
|
+
bounds: { north: 31.87, south: 30.67, east: 122.12, west: 120.86 },
|
|
16
|
+
center: { lat: 31.2304, lng: 121.4737 },
|
|
17
|
+
zoom: 10,
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
name: '广东省',
|
|
21
|
+
code: 'GD',
|
|
22
|
+
bounds: { north: 25.32, south: 20.22, east: 117.22, west: 109.67 },
|
|
23
|
+
center: { lat: 23.1291, lng: 113.2644 },
|
|
24
|
+
zoom: 8,
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: '浙江省',
|
|
28
|
+
code: 'ZJ',
|
|
29
|
+
bounds: { north: 31.41, south: 27.02, east: 123.25, west: 118.01 },
|
|
30
|
+
center: { lat: 30.2741, lng: 120.1551 },
|
|
31
|
+
zoom: 8,
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: '江苏省',
|
|
35
|
+
code: 'JS',
|
|
36
|
+
bounds: { north: 35.2, south: 30.75, east: 121.96, west: 116.36 },
|
|
37
|
+
center: { lat: 32.0617, lng: 118.7778 },
|
|
38
|
+
zoom: 8,
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/google-maps/types.ts"],"names":[],"mappings":";;;AA8Da,QAAA,aAAa,GAAqB;IAC7C;QACE,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;QAClE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE;QACvC,IAAI,EAAE,EAAE;KACT;IACD;QACE,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;QAClE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE;QACvC,IAAI,EAAE,EAAE;KACT;IACD;QACE,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;QAClE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE;QACvC,IAAI,EAAE,CAAC;KACR;IACD;QACE,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;QAClE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE;QACvC,IAAI,EAAE,CAAC;KACR;IACD;QACE,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;QACjE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE;QACvC,IAAI,EAAE,CAAC;KACR;CACF,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ChineseAddress, GeocodeResult, AddressValidationResult, ChinaMapRegion } from './types';
|
|
2
|
+
export declare const parseGoogleGeocoderResult: (result: google.maps.GeocoderResult) => GeocodeResult;
|
|
3
|
+
export declare const parseChineseAddressComponents: (components: google.maps.GeocoderAddressComponent[]) => ChineseAddress;
|
|
4
|
+
export declare const validateChineseAddress: (address: string) => AddressValidationResult;
|
|
5
|
+
export declare const formatChineseAddress: (components: Partial<ChineseAddress>) => string;
|
|
6
|
+
export declare const isWithinChinaBounds: (lat: number, lng: number) => boolean;
|
|
7
|
+
export declare const findBestRegionForCoordinates: (lat: number, lng: number) => ChinaMapRegion | null;
|
|
8
|
+
export declare const calculateDistance: (point1: {
|
|
9
|
+
lat: number;
|
|
10
|
+
lng: number;
|
|
11
|
+
}, point2: {
|
|
12
|
+
lat: number;
|
|
13
|
+
lng: number;
|
|
14
|
+
}) => number;
|
|
15
|
+
export declare const createMapBounds: (points: {
|
|
16
|
+
lat: number;
|
|
17
|
+
lng: number;
|
|
18
|
+
}[]) => google.maps.LatLngBounds | null;
|
|
19
|
+
export declare const debounce: <T extends (...args: any[]) => any>(func: T, wait: number) => ((...args: Parameters<T>) => void);
|
|
20
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/google-maps/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EAEb,uBAAuB,EACvB,cAAc,EACf,MAAM,SAAS,CAAA;AAGhB,eAAO,MAAM,yBAAyB,GACpC,QAAQ,MAAM,CAAC,IAAI,CAAC,cAAc,KACjC,aAyBF,CAAA;AAED,eAAO,MAAM,6BAA6B,GACxC,YAAY,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,KACjD,cA2CF,CAAA;AAED,eAAO,MAAM,sBAAsB,GACjC,SAAS,MAAM,KACd,uBA6CF,CAAA;AAED,eAAO,MAAM,oBAAoB,GAC/B,YAAY,OAAO,CAAC,cAAc,CAAC,KAClC,MAGF,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,KAAK,MAAM,EAAE,KAAK,MAAM,KAAG,OAc9D,CAAA;AAED,eAAO,MAAM,4BAA4B,GACvC,KAAK,MAAM,EACX,KAAK,MAAM,KACV,cAAc,GAAG,IAanB,CAAA;AAED,eAAO,MAAM,iBAAiB,GAC5B,QAAQ;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EACpC,QAAQ;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,KACnC,MAYF,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,QAAQ;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,KACrC,MAAM,CAAC,IAAI,CAAC,YAAY,GAAG,IAM7B,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACxD,MAAM,CAAC,EACP,MAAM,MAAM,KACX,CAAC,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAMnC,CAAA"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.debounce = exports.createMapBounds = exports.calculateDistance = exports.findBestRegionForCoordinates = exports.isWithinChinaBounds = exports.formatChineseAddress = exports.validateChineseAddress = exports.parseChineseAddressComponents = exports.parseGoogleGeocoderResult = void 0;
|
|
4
|
+
const types_1 = require("./types");
|
|
5
|
+
const parseGoogleGeocoderResult = (result) => {
|
|
6
|
+
const components = result.address_components;
|
|
7
|
+
const chineseAddress = (0, exports.parseChineseAddressComponents)(components);
|
|
8
|
+
return {
|
|
9
|
+
address: chineseAddress,
|
|
10
|
+
coordinates: {
|
|
11
|
+
lat: result.geometry.location.lat(),
|
|
12
|
+
lng: result.geometry.location.lng(),
|
|
13
|
+
},
|
|
14
|
+
placeId: result.place_id,
|
|
15
|
+
types: result.types,
|
|
16
|
+
viewport: result.geometry.viewport
|
|
17
|
+
? {
|
|
18
|
+
northeast: {
|
|
19
|
+
lat: result.geometry.viewport.getNorthEast().lat(),
|
|
20
|
+
lng: result.geometry.viewport.getNorthEast().lng(),
|
|
21
|
+
},
|
|
22
|
+
southwest: {
|
|
23
|
+
lat: result.geometry.viewport.getSouthWest().lat(),
|
|
24
|
+
lng: result.geometry.viewport.getSouthWest().lng(),
|
|
25
|
+
},
|
|
26
|
+
}
|
|
27
|
+
: undefined,
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
exports.parseGoogleGeocoderResult = parseGoogleGeocoderResult;
|
|
31
|
+
const parseChineseAddressComponents = (components) => {
|
|
32
|
+
var _a;
|
|
33
|
+
const addressMap = new Map();
|
|
34
|
+
components.forEach((component) => {
|
|
35
|
+
const { long_name, types } = component;
|
|
36
|
+
if (types.includes('administrative_area_level_1')) {
|
|
37
|
+
addressMap.set('province', long_name);
|
|
38
|
+
}
|
|
39
|
+
else if (types.includes('locality') ||
|
|
40
|
+
types.includes('administrative_area_level_2')) {
|
|
41
|
+
addressMap.set('city', long_name);
|
|
42
|
+
}
|
|
43
|
+
else if (types.includes('sublocality') ||
|
|
44
|
+
types.includes('administrative_area_level_3')) {
|
|
45
|
+
addressMap.set('district', long_name);
|
|
46
|
+
}
|
|
47
|
+
else if (types.includes('route') || types.includes('street_address')) {
|
|
48
|
+
addressMap.set('street', long_name);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
const province = addressMap.get('province') || '';
|
|
52
|
+
const city = addressMap.get('city') || '';
|
|
53
|
+
const district = addressMap.get('district') || '';
|
|
54
|
+
const street = addressMap.get('street') || '';
|
|
55
|
+
// Construct full Chinese address format
|
|
56
|
+
const fullAddress = [province, city, district, street]
|
|
57
|
+
.filter(Boolean)
|
|
58
|
+
.join('');
|
|
59
|
+
return {
|
|
60
|
+
province,
|
|
61
|
+
city,
|
|
62
|
+
district,
|
|
63
|
+
street,
|
|
64
|
+
fullAddress,
|
|
65
|
+
formattedAddress: (_a = components.find((c) => c.types.includes('formatted_address'))) === null || _a === void 0 ? void 0 : _a.long_name,
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
exports.parseChineseAddressComponents = parseChineseAddressComponents;
|
|
69
|
+
const validateChineseAddress = (address) => {
|
|
70
|
+
const errors = [];
|
|
71
|
+
let confidence = 0;
|
|
72
|
+
// Basic validation
|
|
73
|
+
if (!address || address.trim().length === 0) {
|
|
74
|
+
errors.push('Address cannot be empty');
|
|
75
|
+
return { isValid: false, errors, confidence: 0 };
|
|
76
|
+
}
|
|
77
|
+
if (address.length < 4) {
|
|
78
|
+
errors.push('Address too short, please provide complete address');
|
|
79
|
+
confidence = 0.2;
|
|
80
|
+
}
|
|
81
|
+
else if (address.length >= 4 && address.length < 10) {
|
|
82
|
+
confidence = 0.6;
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
confidence = 0.8;
|
|
86
|
+
}
|
|
87
|
+
// Check for Chinese characters
|
|
88
|
+
const chineseCharRegex = /[\u4e00-\u9fff]/;
|
|
89
|
+
if (!chineseCharRegex.test(address)) {
|
|
90
|
+
errors.push('Please use Chinese address format');
|
|
91
|
+
confidence *= 0.5;
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
confidence += 0.1;
|
|
95
|
+
}
|
|
96
|
+
// Check for common Chinese address components
|
|
97
|
+
const hasProvince = /省|市|自治区|特别行政区/.test(address);
|
|
98
|
+
const hasCity = /市|县|区/.test(address);
|
|
99
|
+
const hasDistrict = /区|县|镇|街道/.test(address);
|
|
100
|
+
if (hasProvince)
|
|
101
|
+
confidence += 0.1;
|
|
102
|
+
if (hasCity)
|
|
103
|
+
confidence += 0.1;
|
|
104
|
+
if (hasDistrict)
|
|
105
|
+
confidence += 0.1;
|
|
106
|
+
// Ensure confidence doesn't exceed 1
|
|
107
|
+
confidence = Math.min(confidence, 1);
|
|
108
|
+
return {
|
|
109
|
+
isValid: errors.length === 0,
|
|
110
|
+
errors,
|
|
111
|
+
confidence,
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
exports.validateChineseAddress = validateChineseAddress;
|
|
115
|
+
const formatChineseAddress = (components) => {
|
|
116
|
+
const { province, city, district, street } = components;
|
|
117
|
+
return [province, city, district, street].filter(Boolean).join('');
|
|
118
|
+
};
|
|
119
|
+
exports.formatChineseAddress = formatChineseAddress;
|
|
120
|
+
const isWithinChinaBounds = (lat, lng) => {
|
|
121
|
+
const bounds = {
|
|
122
|
+
north: 53.5,
|
|
123
|
+
south: 18.2,
|
|
124
|
+
east: 134.8,
|
|
125
|
+
west: 73.5,
|
|
126
|
+
};
|
|
127
|
+
return (lat >= bounds.south &&
|
|
128
|
+
lat <= bounds.north &&
|
|
129
|
+
lng >= bounds.west &&
|
|
130
|
+
lng <= bounds.east);
|
|
131
|
+
};
|
|
132
|
+
exports.isWithinChinaBounds = isWithinChinaBounds;
|
|
133
|
+
const findBestRegionForCoordinates = (lat, lng) => {
|
|
134
|
+
for (const region of types_1.CHINA_REGIONS) {
|
|
135
|
+
const { bounds } = region;
|
|
136
|
+
if (lat >= bounds.south &&
|
|
137
|
+
lat <= bounds.north &&
|
|
138
|
+
lng >= bounds.west &&
|
|
139
|
+
lng <= bounds.east) {
|
|
140
|
+
return region;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return null;
|
|
144
|
+
};
|
|
145
|
+
exports.findBestRegionForCoordinates = findBestRegionForCoordinates;
|
|
146
|
+
const calculateDistance = (point1, point2) => {
|
|
147
|
+
const R = 6371; // Earth's radius in kilometers
|
|
148
|
+
const dLat = ((point2.lat - point1.lat) * Math.PI) / 180;
|
|
149
|
+
const dLng = ((point2.lng - point1.lng) * Math.PI) / 180;
|
|
150
|
+
const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
|
|
151
|
+
Math.cos((point1.lat * Math.PI) / 180) *
|
|
152
|
+
Math.cos((point2.lat * Math.PI) / 180) *
|
|
153
|
+
Math.sin(dLng / 2) *
|
|
154
|
+
Math.sin(dLng / 2);
|
|
155
|
+
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
|
|
156
|
+
return R * c;
|
|
157
|
+
};
|
|
158
|
+
exports.calculateDistance = calculateDistance;
|
|
159
|
+
const createMapBounds = (points) => {
|
|
160
|
+
var _a;
|
|
161
|
+
if (!((_a = window.google) === null || _a === void 0 ? void 0 : _a.maps) || points.length === 0)
|
|
162
|
+
return null;
|
|
163
|
+
const bounds = new google.maps.LatLngBounds();
|
|
164
|
+
points.forEach((point) => bounds.extend(point));
|
|
165
|
+
return bounds;
|
|
166
|
+
};
|
|
167
|
+
exports.createMapBounds = createMapBounds;
|
|
168
|
+
const debounce = (func, wait) => {
|
|
169
|
+
let timeout;
|
|
170
|
+
return (...args) => {
|
|
171
|
+
clearTimeout(timeout);
|
|
172
|
+
timeout = setTimeout(() => func(...args), wait);
|
|
173
|
+
};
|
|
174
|
+
};
|
|
175
|
+
exports.debounce = debounce;
|
|
176
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/lib/google-maps/utils.ts"],"names":[],"mappings":"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"}
|