├── 3.html
├── CNAME
├── LICENSE
├── README.md
├── beta.html
├── dist
├── beta
│ ├── styling-example.js
│ ├── tiny-world-all-10000.js
│ ├── tiny-world-all-10000.json
│ ├── tiny-world-all-2000.js
│ ├── tiny-world-all-2000.json
│ ├── tiny-world-all-4000.js
│ ├── tiny-world-all-4000.json
│ ├── tiny-world-borders.js
│ ├── tiny-world-borders.json
│ ├── tiny-world-cities-10000.js
│ ├── tiny-world-cities-10000.json
│ ├── tiny-world-cities-2000.js
│ ├── tiny-world-cities-2000.json
│ ├── tiny-world-cities-4000.js
│ ├── tiny-world-cities-4000.json
│ ├── tiny-world-noborders-10000.js
│ ├── tiny-world-noborders-10000.json
│ ├── tiny-world-noborders-2000.js
│ ├── tiny-world-noborders-2000.json
│ ├── tiny-world-noborders-4000.js
│ ├── tiny-world-noborders-4000.json
│ ├── tiny-world-nocities.js
│ ├── tiny-world-nocities.json
│ ├── tiny-world-nostates-10000.js
│ ├── tiny-world-nostates-10000.json
│ ├── tiny-world-nostates-2000.js
│ ├── tiny-world-nostates-2000.json
│ ├── tiny-world-nostates-4000.js
│ └── tiny-world-nostates-4000.json
├── tiny-world-all-10000.js
├── tiny-world-all-10000.json
├── tiny-world-all-2000.js
├── tiny-world-all-2000.json
├── tiny-world-all-4000.js
├── tiny-world-all-4000.json
├── tiny-world-borders.js
├── tiny-world-borders.json
├── tiny-world-cities-10000.js
├── tiny-world-cities-10000.json
├── tiny-world-cities-2000.js
├── tiny-world-cities-2000.json
├── tiny-world-cities-4000.js
├── tiny-world-cities-4000.json
├── tiny-world-countries.js
├── tiny-world-countries.json
├── tiny-world-noborders-10000.js
├── tiny-world-noborders-10000.json
├── tiny-world-noborders-2000.js
├── tiny-world-noborders-2000.json
├── tiny-world-noborders-4000.js
├── tiny-world-noborders-4000.json
├── tiny-world-nocities.js
├── tiny-world-nocities.json
├── tiny-world-nocountries-10000.js
├── tiny-world-nocountries-10000.json
├── tiny-world-nocountries-2000.js
├── tiny-world-nocountries-2000.json
├── tiny-world-nocountries-4000.js
├── tiny-world-nocountries-4000.json
├── v2
│ ├── tiny-world-all-10000.js
│ ├── tiny-world-all-10000.json
│ ├── tiny-world-all-2000.js
│ ├── tiny-world-all-2000.json
│ ├── tiny-world-all-4000.js
│ ├── tiny-world-all-4000.json
│ ├── tiny-world-borders.js
│ ├── tiny-world-borders.json
│ ├── tiny-world-cities-10000.js
│ ├── tiny-world-cities-10000.json
│ ├── tiny-world-cities-2000.js
│ ├── tiny-world-cities-2000.json
│ ├── tiny-world-cities-4000.js
│ ├── tiny-world-cities-4000.json
│ ├── tiny-world-countries.js
│ ├── tiny-world-countries.json
│ ├── tiny-world-noborders-10000.js
│ ├── tiny-world-noborders-10000.json
│ ├── tiny-world-noborders-2000.js
│ ├── tiny-world-noborders-2000.json
│ ├── tiny-world-noborders-4000.js
│ ├── tiny-world-noborders-4000.json
│ ├── tiny-world-nocities.js
│ ├── tiny-world-nocities.json
│ ├── tiny-world-nocountries-10000.js
│ ├── tiny-world-nocountries-10000.json
│ ├── tiny-world-nocountries-2000.js
│ ├── tiny-world-nocountries-2000.json
│ ├── tiny-world-nocountries-4000.js
│ └── tiny-world-nocountries-4000.json
└── v3
│ ├── styling-example.js
│ ├── tiny-world-all-10000.js
│ ├── tiny-world-all-10000.json
│ ├── tiny-world-all-2000.js
│ ├── tiny-world-all-2000.json
│ ├── tiny-world-all-4000.js
│ ├── tiny-world-all-4000.json
│ ├── tiny-world-borders.js
│ ├── tiny-world-borders.json
│ ├── tiny-world-cities-10000.js
│ ├── tiny-world-cities-10000.json
│ ├── tiny-world-cities-2000.js
│ ├── tiny-world-cities-2000.json
│ ├── tiny-world-cities-4000.js
│ ├── tiny-world-cities-4000.json
│ ├── tiny-world-noborders-10000.js
│ ├── tiny-world-noborders-10000.json
│ ├── tiny-world-noborders-2000.js
│ ├── tiny-world-noborders-2000.json
│ ├── tiny-world-noborders-4000.js
│ ├── tiny-world-noborders-4000.json
│ ├── tiny-world-nocities.js
│ ├── tiny-world-nocities.json
│ ├── tiny-world-nostates-10000.js
│ ├── tiny-world-nostates-10000.json
│ ├── tiny-world-nostates-2000.js
│ ├── tiny-world-nostates-2000.json
│ ├── tiny-world-nostates-4000.js
│ └── tiny-world-nostates-4000.json
├── images
├── 3
│ ├── gray+stone.png
│ ├── great-lakes-bad.png
│ ├── great-lakes-good.png
│ ├── greenland.png
│ ├── nl-bad.png
│ ├── nl-nice.png
│ ├── nl-nice2.png
│ ├── philippines-bad.png
│ ├── philippines-good.png
│ ├── sea+water.png
│ ├── uk-bad.png
│ └── uk-good.png
├── maximalism.png
├── noborders.png
├── roads.png
├── styling.png
├── v3.png
├── zoomed-in-2.png
├── zoomed-in-3.png
├── zoomed-in-la-coast.png
├── zoomed-in.png
├── zoomed-mid.png
└── zoomed-out.png
├── index.html
└── service-worker.js
/3.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Tiny World Map 3: Stealing Vertices From Fjords
8 |
162 |
165 |
166 |
167 | Tiny World Map 3
168 |
170 |
171 |
172 |
173 |
174 |
175 |
190 | Two weeks ago, we released tinyworldmap ,
192 | a world map for offline-first and low-bandwidth web apps. It was
193 | originally developed as a simple offline fallback for OpenStreetMap
194 | tiles. The most complete version, shown above, is only 450 kB
195 | gzipped.
196 | Stealing Vertices From
197 | Fjords
198 | With quite a few websites already using the map after two weeks, the
199 | reception was very positive. Still, it was clear that a less coarse map
200 | would be preferred. In the days following the release, people gently
201 | reminded us that both the Caspian Sea and the Great Lakes were shown as
202 | land, that many islands were missing, that half of our (not their, our)
203 | home country looked like it was about to drift into sea, and that some
204 | UK towns were already underwater.
205 | In tinyworldmap’s third release, this has all been fixed. Scroll
206 | horizontally to see the original version:
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 | Although the additional detail has resulted in a slightly bigger file
219 | (~450K gzipped), most of the vertices were obtained by smoothing
220 | sparsely populated areas with complex shorelines. We dedicated
221 | considerable effort to ensure the smoothed shores blend into the overall
222 | map style.
223 | Altering the Map Appearance
224 | You can now do this:
225 |
227 |
228 |
229 |
302 | For every map layer, any property
304 | can be set on the canvas rendering context. More info can be found in
305 | our documentation .
307 | Of course, because the map is rendered client-side, excessive use of
308 | shadows, filters and textures will slow down older devices.
309 | A Note On Custom-Content
310 | Maps
311 | We have received a lot of questions from people who would like to
312 | create custom-content maps themselves. Road maps, city maps, detail
313 | maps, translated maps, you name it.
314 | Currently, the only way to obtain a custom map is by hiring us. I’d
315 | love to document and open-source the code, and make the entire process
316 | more reproducible and less dependent on manual changes, but that
317 | requires both a lot of time and may hurt our business. In other words,
318 | we would need an alternative source of funding.
319 | If you are interested in providing funding or if you know of an
320 | organization that might be, let us
322 | know !
323 |
324 | © tinyworldmap
325 |
326 |
327 |
--------------------------------------------------------------------------------
/CNAME:
--------------------------------------------------------------------------------
1 | tinyworldmap.com
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | ## ODC Open Database License (ODbL)
2 |
3 | ### Preamble
4 |
5 | The Open Database License (ODbL) is a license agreement intended to
6 | allow users to freely share, modify, and use this Database while
7 | maintaining this same freedom for others. Many databases are covered by
8 | copyright, and therefore this document licenses these rights. Some
9 | jurisdictions, mainly in the European Union, have specific rights that
10 | cover databases, and so the ODbL addresses these rights, too. Finally,
11 | the ODbL is also an agreement in contract for users of this Database to
12 | act in certain ways in return for accessing this Database.
13 |
14 | Databases can contain a wide variety of types of content (images,
15 | audiovisual material, and sounds all in the same database, for example),
16 | and so the ODbL only governs the rights over the Database, and not the
17 | contents of the Database individually. Licensors should use the ODbL
18 | together with another license for the contents, if the contents have a
19 | single set of rights that uniformly covers all of the contents. If the
20 | contents have multiple sets of different rights, Licensors should
21 | describe what rights govern what contents together in the individual
22 | record or in some other way that clarifies what rights apply.
23 |
24 | Sometimes the contents of a database, or the database itself, can be
25 | covered by other rights not addressed here (such as private contracts,
26 | trade mark over the name, or privacy rights / data protection rights
27 | over information in the contents), and so you are advised that you may
28 | have to consult other documents or clear other rights before doing
29 | activities not covered by this License.
30 |
31 | ------
32 |
33 | The Licensor (as defined below)
34 |
35 | and
36 |
37 | You (as defined below)
38 |
39 | agree as follows:
40 |
41 | ### 1.0 Definitions of Capitalised Words
42 |
43 | "Collective Database" - Means this Database in unmodified form as part
44 | of a collection of independent databases in themselves that together are
45 | assembled into a collective whole. A work that constitutes a Collective
46 | Database will not be considered a Derivative Database.
47 |
48 | "Convey" - As a verb, means Using the Database, a Derivative Database,
49 | or the Database as part of a Collective Database in any way that enables
50 | a Person to make or receive copies of the Database or a Derivative
51 | Database. Conveying does not include interaction with a user through a
52 | computer network, or creating and Using a Produced Work, where no
53 | transfer of a copy of the Database or a Derivative Database occurs.
54 | "Contents" - The contents of this Database, which includes the
55 | information, independent works, or other material collected into the
56 | Database. For example, the contents of the Database could be factual
57 | data or works such as images, audiovisual material, text, or sounds.
58 |
59 | "Database" - A collection of material (the Contents) arranged in a
60 | systematic or methodical way and individually accessible by electronic
61 | or other means offered under the terms of this License.
62 |
63 | "Database Directive" - Means Directive 96/9/EC of the European
64 | Parliament and of the Council of 11 March 1996 on the legal protection
65 | of databases, as amended or succeeded.
66 |
67 | "Database Right" - Means rights resulting from the Chapter III ("sui
68 | generis") rights in the Database Directive (as amended and as transposed
69 | by member states), which includes the Extraction and Re-utilisation of
70 | the whole or a Substantial part of the Contents, as well as any similar
71 | rights available in the relevant jurisdiction under Section 10.4.
72 |
73 | "Derivative Database" - Means a database based upon the Database, and
74 | includes any translation, adaptation, arrangement, modification, or any
75 | other alteration of the Database or of a Substantial part of the
76 | Contents. This includes, but is not limited to, Extracting or
77 | Re-utilising the whole or a Substantial part of the Contents in a new
78 | Database.
79 |
80 | "Extraction" - Means the permanent or temporary transfer of all or a
81 | Substantial part of the Contents to another medium by any means or in
82 | any form.
83 |
84 | "License" - Means this license agreement and is both a license of rights
85 | such as copyright and Database Rights and an agreement in contract.
86 |
87 | "Licensor" - Means the Person that offers the Database under the terms
88 | of this License.
89 |
90 | "Person" - Means a natural or legal person or a body of persons
91 | corporate or incorporate.
92 |
93 | "Produced Work" - a work (such as an image, audiovisual material, text,
94 | or sounds) resulting from using the whole or a Substantial part of the
95 | Contents (via a search or other query) from this Database, a Derivative
96 | Database, or this Database as part of a Collective Database.
97 |
98 | "Publicly" - means to Persons other than You or under Your control by
99 | either more than 50% ownership or by the power to direct their
100 | activities (such as contracting with an independent consultant).
101 |
102 | "Re-utilisation" - means any form of making available to the public all
103 | or a Substantial part of the Contents by the distribution of copies, by
104 | renting, by online or other forms of transmission.
105 |
106 | "Substantial" - Means substantial in terms of quantity or quality or a
107 | combination of both. The repeated and systematic Extraction or
108 | Re-utilisation of insubstantial parts of the Contents may amount to the
109 | Extraction or Re-utilisation of a Substantial part of the Contents.
110 |
111 | "Use" - As a verb, means doing any act that is restricted by copyright
112 | or Database Rights whether in the original medium or any other; and
113 | includes without limitation distributing, copying, publicly performing,
114 | publicly displaying, and preparing derivative works of the Database, as
115 | well as modifying the Database as may be technically necessary to use it
116 | in a different mode or format.
117 |
118 | "You" - Means a Person exercising rights under this License who has not
119 | previously violated the terms of this License with respect to the
120 | Database, or who has received express permission from the Licensor to
121 | exercise rights under this License despite a previous violation.
122 |
123 | Words in the singular include the plural and vice versa.
124 |
125 | ### 2.0 What this License covers
126 |
127 | 2.1. Legal effect of this document. This License is:
128 |
129 | a. A license of applicable copyright and neighbouring rights;
130 |
131 | b. A license of the Database Right; and
132 |
133 | c. An agreement in contract between You and the Licensor.
134 |
135 | 2.2 Legal rights covered. This License covers the legal rights in the
136 | Database, including:
137 |
138 | a. Copyright. Any copyright or neighbouring rights in the Database.
139 | The copyright licensed includes any individual elements of the
140 | Database, but does not cover the copyright over the Contents
141 | independent of this Database. See Section 2.4 for details. Copyright
142 | law varies between jurisdictions, but is likely to cover: the Database
143 | model or schema, which is the structure, arrangement, and organisation
144 | of the Database, and can also include the Database tables and table
145 | indexes; the data entry and output sheets; and the Field names of
146 | Contents stored in the Database;
147 |
148 | b. Database Rights. Database Rights only extend to the Extraction and
149 | Re-utilisation of the whole or a Substantial part of the Contents.
150 | Database Rights can apply even when there is no copyright over the
151 | Database. Database Rights can also apply when the Contents are removed
152 | from the Database and are selected and arranged in a way that would
153 | not infringe any applicable copyright; and
154 |
155 | c. Contract. This is an agreement between You and the Licensor for
156 | access to the Database. In return you agree to certain conditions of
157 | use on this access as outlined in this License.
158 |
159 | 2.3 Rights not covered.
160 |
161 | a. This License does not apply to computer programs used in the making
162 | or operation of the Database;
163 |
164 | b. This License does not cover any patents over the Contents or the
165 | Database; and
166 |
167 | c. This License does not cover any trademarks associated with the
168 | Database.
169 |
170 | 2.4 Relationship to Contents in the Database. The individual items of
171 | the Contents contained in this Database may be covered by other rights,
172 | including copyright, patent, data protection, privacy, or personality
173 | rights, and this License does not cover any rights (other than Database
174 | Rights or in contract) in individual Contents contained in the Database.
175 | For example, if used on a Database of images (the Contents), this
176 | License would not apply to copyright over individual images, which could
177 | have their own separate licenses, or one single license covering all of
178 | the rights over the images.
179 |
180 | ### 3.0 Rights granted
181 |
182 | 3.1 Subject to the terms and conditions of this License, the Licensor
183 | grants to You a worldwide, royalty-free, non-exclusive, terminable (but
184 | only under Section 9) license to Use the Database for the duration of
185 | any applicable copyright and Database Rights. These rights explicitly
186 | include commercial use, and do not exclude any field of endeavour. To
187 | the extent possible in the relevant jurisdiction, these rights may be
188 | exercised in all media and formats whether now known or created in the
189 | future.
190 |
191 | The rights granted cover, for example:
192 |
193 | a. Extraction and Re-utilisation of the whole or a Substantial part of
194 | the Contents;
195 |
196 | b. Creation of Derivative Databases;
197 |
198 | c. Creation of Collective Databases;
199 |
200 | d. Creation of temporary or permanent reproductions by any means and
201 | in any form, in whole or in part, including of any Derivative
202 | Databases or as a part of Collective Databases; and
203 |
204 | e. Distribution, communication, display, lending, making available, or
205 | performance to the public by any means and in any form, in whole or in
206 | part, including of any Derivative Database or as a part of Collective
207 | Databases.
208 |
209 | 3.2 Compulsory license schemes. For the avoidance of doubt:
210 |
211 | a. Non-waivable compulsory license schemes. In those jurisdictions in
212 | which the right to collect royalties through any statutory or
213 | compulsory licensing scheme cannot be waived, the Licensor reserves
214 | the exclusive right to collect such royalties for any exercise by You
215 | of the rights granted under this License;
216 |
217 | b. Waivable compulsory license schemes. In those jurisdictions in
218 | which the right to collect royalties through any statutory or
219 | compulsory licensing scheme can be waived, the Licensor waives the
220 | exclusive right to collect such royalties for any exercise by You of
221 | the rights granted under this License; and,
222 |
223 | c. Voluntary license schemes. The Licensor waives the right to collect
224 | royalties, whether individually or, in the event that the Licensor is
225 | a member of a collecting society that administers voluntary licensing
226 | schemes, via that society, from any exercise by You of the rights
227 | granted under this License.
228 |
229 | 3.3 The right to release the Database under different terms, or to stop
230 | distributing or making available the Database, is reserved. Note that
231 | this Database may be multiple-licensed, and so You may have the choice
232 | of using alternative licenses for this Database. Subject to Section
233 | 10.4, all other rights not expressly granted by Licensor are reserved.
234 |
235 | ### 4.0 Conditions of Use
236 |
237 | 4.1 The rights granted in Section 3 above are expressly made subject to
238 | Your complying with the following conditions of use. These are important
239 | conditions of this License, and if You fail to follow them, You will be
240 | in material breach of its terms.
241 |
242 | 4.2 Notices. If You Publicly Convey this Database, any Derivative
243 | Database, or the Database as part of a Collective Database, then You
244 | must:
245 |
246 | a. Do so only under the terms of this License or another license
247 | permitted under Section 4.4;
248 |
249 | b. Include a copy of this License (or, as applicable, a license
250 | permitted under Section 4.4) or its Uniform Resource Identifier (URI)
251 | with the Database or Derivative Database, including both in the
252 | Database or Derivative Database and in any relevant documentation; and
253 |
254 | c. Keep intact any copyright or Database Right notices and notices
255 | that refer to this License.
256 |
257 | d. If it is not possible to put the required notices in a particular
258 | file due to its structure, then You must include the notices in a
259 | location (such as a relevant directory) where users would be likely to
260 | look for it.
261 |
262 | 4.3 Notice for using output (Contents). Creating and Using a Produced
263 | Work does not require the notice in Section 4.2. However, if you
264 | Publicly Use a Produced Work, You must include a notice associated with
265 | the Produced Work reasonably calculated to make any Person that uses,
266 | views, accesses, interacts with, or is otherwise exposed to the Produced
267 | Work aware that Content was obtained from the Database, Derivative
268 | Database, or the Database as part of a Collective Database, and that it
269 | is available under this License.
270 |
271 | a. Example notice. The following text will satisfy notice under
272 | Section 4.3:
273 |
274 | Contains information from DATABASE NAME, which is made available
275 | here under the Open Database License (ODbL).
276 |
277 | DATABASE NAME should be replaced with the name of the Database and a
278 | hyperlink to the URI of the Database. "Open Database License" should
279 | contain a hyperlink to the URI of the text of this License. If
280 | hyperlinks are not possible, You should include the plain text of the
281 | required URI's with the above notice.
282 |
283 | 4.4 Share alike.
284 |
285 | a. Any Derivative Database that You Publicly Use must be only under
286 | the terms of:
287 |
288 | i. This License;
289 |
290 | ii. A later version of this License similar in spirit to this
291 | License; or
292 |
293 | iii. A compatible license.
294 |
295 | If You license the Derivative Database under one of the licenses
296 | mentioned in (iii), You must comply with the terms of that license.
297 |
298 | b. For the avoidance of doubt, Extraction or Re-utilisation of the
299 | whole or a Substantial part of the Contents into a new database is a
300 | Derivative Database and must comply with Section 4.4.
301 |
302 | c. Derivative Databases and Produced Works. A Derivative Database is
303 | Publicly Used and so must comply with Section 4.4. if a Produced Work
304 | created from the Derivative Database is Publicly Used.
305 |
306 | d. Share Alike and additional Contents. For the avoidance of doubt,
307 | You must not add Contents to Derivative Databases under Section 4.4 a
308 | that are incompatible with the rights granted under this License.
309 |
310 | e. Compatible licenses. Licensors may authorise a proxy to determine
311 | compatible licenses under Section 4.4 a iii. If they do so, the
312 | authorised proxy's public statement of acceptance of a compatible
313 | license grants You permission to use the compatible license.
314 |
315 |
316 | 4.5 Limits of Share Alike. The requirements of Section 4.4 do not apply
317 | in the following:
318 |
319 | a. For the avoidance of doubt, You are not required to license
320 | Collective Databases under this License if You incorporate this
321 | Database or a Derivative Database in the collection, but this License
322 | still applies to this Database or a Derivative Database as a part of
323 | the Collective Database;
324 |
325 | b. Using this Database, a Derivative Database, or this Database as
326 | part of a Collective Database to create a Produced Work does not
327 | create a Derivative Database for purposes of Section 4.4; and
328 |
329 | c. Use of a Derivative Database internally within an organisation is
330 | not to the public and therefore does not fall under the requirements
331 | of Section 4.4.
332 |
333 | 4.6 Access to Derivative Databases. If You Publicly Use a Derivative
334 | Database or a Produced Work from a Derivative Database, You must also
335 | offer to recipients of the Derivative Database or Produced Work a copy
336 | in a machine readable form of:
337 |
338 | a. The entire Derivative Database; or
339 |
340 | b. A file containing all of the alterations made to the Database or
341 | the method of making the alterations to the Database (such as an
342 | algorithm), including any additional Contents, that make up all the
343 | differences between the Database and the Derivative Database.
344 |
345 | The Derivative Database (under a.) or alteration file (under b.) must be
346 | available at no more than a reasonable production cost for physical
347 | distributions and free of charge if distributed over the internet.
348 |
349 | 4.7 Technological measures and additional terms
350 |
351 | a. This License does not allow You to impose (except subject to
352 | Section 4.7 b.) any terms or any technological measures on the
353 | Database, a Derivative Database, or the whole or a Substantial part of
354 | the Contents that alter or restrict the terms of this License, or any
355 | rights granted under it, or have the effect or intent of restricting
356 | the ability of any person to exercise those rights.
357 |
358 | b. Parallel distribution. You may impose terms or technological
359 | measures on the Database, a Derivative Database, or the whole or a
360 | Substantial part of the Contents (a "Restricted Database") in
361 | contravention of Section 4.74 a. only if You also make a copy of the
362 | Database or a Derivative Database available to the recipient of the
363 | Restricted Database:
364 |
365 | i. That is available without additional fee;
366 |
367 | ii. That is available in a medium that does not alter or restrict
368 | the terms of this License, or any rights granted under it, or have
369 | the effect or intent of restricting the ability of any person to
370 | exercise those rights (an "Unrestricted Database"); and
371 |
372 | iii. The Unrestricted Database is at least as accessible to the
373 | recipient as a practical matter as the Restricted Database.
374 |
375 | c. For the avoidance of doubt, You may place this Database or a
376 | Derivative Database in an authenticated environment, behind a
377 | password, or within a similar access control scheme provided that You
378 | do not alter or restrict the terms of this License or any rights
379 | granted under it or have the effect or intent of restricting the
380 | ability of any person to exercise those rights.
381 |
382 | 4.8 Licensing of others. You may not sublicense the Database. Each time
383 | You communicate the Database, the whole or Substantial part of the
384 | Contents, or any Derivative Database to anyone else in any way, the
385 | Licensor offers to the recipient a license to the Database on the same
386 | terms and conditions as this License. You are not responsible for
387 | enforcing compliance by third parties with this License, but You may
388 | enforce any rights that You have over a Derivative Database. You are
389 | solely responsible for any modifications of a Derivative Database made
390 | by You or another Person at Your direction. You may not impose any
391 | further restrictions on the exercise of the rights granted or affirmed
392 | under this License.
393 |
394 | ### 5.0 Moral rights
395 |
396 | 5.1 Moral rights. This section covers moral rights, including any rights
397 | to be identified as the author of the Database or to object to treatment
398 | that would otherwise prejudice the author's honour and reputation, or
399 | any other derogatory treatment:
400 |
401 | a. For jurisdictions allowing waiver of moral rights, Licensor waives
402 | all moral rights that Licensor may have in the Database to the fullest
403 | extent possible by the law of the relevant jurisdiction under Section
404 | 10.4;
405 |
406 | b. If waiver of moral rights under Section 5.1 a in the relevant
407 | jurisdiction is not possible, Licensor agrees not to assert any moral
408 | rights over the Database and waives all claims in moral rights to the
409 | fullest extent possible by the law of the relevant jurisdiction under
410 | Section 10.4; and
411 |
412 | c. For jurisdictions not allowing waiver or an agreement not to assert
413 | moral rights under Section 5.1 a and b, the author may retain their
414 | moral rights over certain aspects of the Database.
415 |
416 | Please note that some jurisdictions do not allow for the waiver of moral
417 | rights, and so moral rights may still subsist over the Database in some
418 | jurisdictions.
419 |
420 | ### 6.0 Fair dealing, Database exceptions, and other rights not affected
421 |
422 | 6.1 This License does not affect any rights that You or anyone else may
423 | independently have under any applicable law to make any use of this
424 | Database, including without limitation:
425 |
426 | a. Exceptions to the Database Right including: Extraction of Contents
427 | from non-electronic Databases for private purposes, Extraction for
428 | purposes of illustration for teaching or scientific research, and
429 | Extraction or Re-utilisation for public security or an administrative
430 | or judicial procedure.
431 |
432 | b. Fair dealing, fair use, or any other legally recognised limitation
433 | or exception to infringement of copyright or other applicable laws.
434 |
435 | 6.2 This License does not affect any rights of lawful users to Extract
436 | and Re-utilise insubstantial parts of the Contents, evaluated
437 | quantitatively or qualitatively, for any purposes whatsoever, including
438 | creating a Derivative Database (subject to other rights over the
439 | Contents, see Section 2.4). The repeated and systematic Extraction or
440 | Re-utilisation of insubstantial parts of the Contents may however amount
441 | to the Extraction or Re-utilisation of a Substantial part of the
442 | Contents.
443 |
444 | ### 7.0 Warranties and Disclaimer
445 |
446 | 7.1 The Database is licensed by the Licensor "as is" and without any
447 | warranty of any kind, either express, implied, or arising by statute,
448 | custom, course of dealing, or trade usage. Licensor specifically
449 | disclaims any and all implied warranties or conditions of title,
450 | non-infringement, accuracy or completeness, the presence or absence of
451 | errors, fitness for a particular purpose, merchantability, or otherwise.
452 | Some jurisdictions do not allow the exclusion of implied warranties, so
453 | this exclusion may not apply to You.
454 |
455 | ### 8.0 Limitation of liability
456 |
457 | 8.1 Subject to any liability that may not be excluded or limited by law,
458 | the Licensor is not liable for, and expressly excludes, all liability
459 | for loss or damage however and whenever caused to anyone by any use
460 | under this License, whether by You or by anyone else, and whether caused
461 | by any fault on the part of the Licensor or not. This exclusion of
462 | liability includes, but is not limited to, any special, incidental,
463 | consequential, punitive, or exemplary damages such as loss of revenue,
464 | data, anticipated profits, and lost business. This exclusion applies
465 | even if the Licensor has been advised of the possibility of such
466 | damages.
467 |
468 | 8.2 If liability may not be excluded by law, it is limited to actual and
469 | direct financial loss to the extent it is caused by proved negligence on
470 | the part of the Licensor.
471 |
472 | ### 9.0 Termination of Your rights under this License
473 |
474 | 9.1 Any breach by You of the terms and conditions of this License
475 | automatically terminates this License with immediate effect and without
476 | notice to You. For the avoidance of doubt, Persons who have received the
477 | Database, the whole or a Substantial part of the Contents, Derivative
478 | Databases, or the Database as part of a Collective Database from You
479 | under this License will not have their licenses terminated provided
480 | their use is in full compliance with this License or a license granted
481 | under Section 4.8 of this License. Sections 1, 2, 7, 8, 9 and 10 will
482 | survive any termination of this License.
483 |
484 | 9.2 If You are not in breach of the terms of this License, the Licensor
485 | will not terminate Your rights under it.
486 |
487 | 9.3 Unless terminated under Section 9.1, this License is granted to You
488 | for the duration of applicable rights in the Database.
489 |
490 | 9.4 Reinstatement of rights. If you cease any breach of the terms and
491 | conditions of this License, then your full rights under this License
492 | will be reinstated:
493 |
494 | a. Provisionally and subject to permanent termination until the 60th
495 | day after cessation of breach;
496 |
497 | b. Permanently on the 60th day after cessation of breach unless
498 | otherwise reasonably notified by the Licensor; or
499 |
500 | c. Permanently if reasonably notified by the Licensor of the
501 | violation, this is the first time You have received notice of
502 | violation of this License from the Licensor, and You cure the
503 | violation prior to 30 days after your receipt of the notice.
504 |
505 | Persons subject to permanent termination of rights are not eligible to
506 | be a recipient and receive a license under Section 4.8.
507 |
508 | 9.5 Notwithstanding the above, Licensor reserves the right to release
509 | the Database under different license terms or to stop distributing or
510 | making available the Database. Releasing the Database under different
511 | license terms or stopping the distribution of the Database will not
512 | withdraw this License (or any other license that has been, or is
513 | required to be, granted under the terms of this License), and this
514 | License will continue in full force and effect unless terminated as
515 | stated above.
516 |
517 | ### 10.0 General
518 |
519 | 10.1 If any provision of this License is held to be invalid or
520 | unenforceable, that must not affect the validity or enforceability of
521 | the remainder of the terms and conditions of this License and each
522 | remaining provision of this License shall be valid and enforced to the
523 | fullest extent permitted by law.
524 |
525 | 10.2 This License is the entire agreement between the parties with
526 | respect to the rights granted here over the Database. It replaces any
527 | earlier understandings, agreements or representations with respect to
528 | the Database.
529 |
530 | 10.3 If You are in breach of the terms of this License, You will not be
531 | entitled to rely on the terms of this License or to complain of any
532 | breach by the Licensor.
533 |
534 | 10.4 Choice of law. This License takes effect in and will be governed by
535 | the laws of the relevant jurisdiction in which the License terms are
536 | sought to be enforced. If the standard suite of rights granted under
537 | applicable copyright law and Database Rights in the relevant
538 | jurisdiction includes additional rights not granted under this License,
539 | these additional rights are granted in this License in order to meet the
540 | terms of this License.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # tinyworldmap
2 |
3 | tinyworldmap is a world map for offline-first and low-bandwidth web apps.
4 |
5 | [Nightly demo](https://tinyworldmap.com/beta) | [Stable demo](https://tinyworldmap.com) | [v3 announcement](https://tinyworldmap.com/3)
6 |
7 |
8 |
9 | tinyworldmap is designed to be used with Leaflet. All zoom levels are supported, and the most complete version is only 450 kB gzipped. Its client-side rendering has been extensively profiled and tested on low-end decade-old phones, with no discernible lag.
10 |
11 | By default, the map displays the 10,000 most populous cities added to OpenStreetMap. At the time of writing, this encompasses all cities and towns with a population of at least 48,000:
12 |
13 |
14 |
15 | ## Usage
16 |
17 | There are two ways to use the map:
18 |
19 | 1. As a base map, replacing OpenStreetMap tiles
20 | 2. As an offline fallback for OpenStreetMap tiles
21 |
22 | ### As a base map
23 |
24 | To use tinyworldmap as a Leaflet base map, add the following to your `head` tag:
25 |
26 | ```html
27 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
31 |
41 |
42 |
43 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 | tinyworldmap is an ODBL-licensed map for offline-first and low-bandwidth web apps. You're free to use it .
123 |
124 |
125 | If your organization requires a custom map, such as a city map, a road map, or a map in another language, please contact us for a quote.
126 |
127 |
128 |
148 |
159 |
160 |
--------------------------------------------------------------------------------
/dist/beta/styling-example.js:
--------------------------------------------------------------------------------
1 | let cb = places.find(p => p.id == 'country_borders')
2 |
3 | let defaultStyling = {
4 | background: {
5 | style: {
6 | fillStyle: (cb && cb.paths.length ? "#aad3df" : 'white')
7 | }
8 | },
9 | country_borders: {
10 | style: {
11 | fillStyle: '#fdf9f1',
12 | strokeStyle: '#b4a6ae',
13 | lineWidth: 1
14 | },
15 | },
16 | state_borders: {
17 | style: {
18 | fillStyle: 'transparent',
19 | strokeStyle: '#b4a6ae',
20 | lineWidth: 0.5
21 | },
22 | options: {lineDash: [2, 2], minZoom: 4}
23 | },
24 | lakes: {
25 | style: {
26 | fillStyle: '#aad3df',
27 | strokeStyle: '#b4a6ae',
28 | lineJoin: 'round'
29 | }
30 | },
31 | country_labels: {
32 | style: {
33 | fillStyle: 'black',
34 | strokeStyle: 'rgba(255,255,255,.8)',
35 | lineWidth: 3,
36 | font: 'bold 14px Arial, Helvetica, Ubuntu, sans-serif'
37 | },
38 | options: {maxWidth: 100, maxZoom: 8}
39 | },
40 | city_labels: {
41 | style: {
42 | fillStyle: 'black',
43 | strokeStyle: 'rgba(255,255,255,.8)',
44 | lineWidth: 3,
45 | font: '12px Arial, Helvetica, Ubuntu, sans-serif'
46 | },
47 | options: {maxWidth: 70, dotColor: (cb ? null : 'red')}
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/dist/tiny-world-countries.js:
--------------------------------------------------------------------------------
1 | (function(){
2 | // This dataset is licensed under the ODbL license; attribute tinyworldmap and OpenStreetMap
3 | let places = {"countries":[[0.396098,0.791666,"China",0],[0.379362,0.220984,"United States",0],[0.5069,0.827473,"Indonesia",0],[0.528861,0.352222,"Brazil",0],[0.26229,0.771515,"Russia",0],[0.382323,0.597014,"Turkey",1],[0.292197,0.540336,"Sweden",1],[0.146465,0.381076,"Greenland",0],[0.473208,0.522222,"Nigeria",1],[0.432331,0.216645,"Mexico",1],[0.455178,0.799903,"Vietnam",1],[0.583651,0.569421,"South Africa",1],[0.60389,0.319535,"Argentina",1],[0.284376,0.200023,"Canada",1],[0.571073,0.874319,"Australia",1],[0.440315,0.658344,"Oman",1],[0.508286,0.566173,"Congo",2],[0.436276,0.718522,"India",2],[0.411512,0.69791,"Pakistan",2],[0.390705,0.886776,"Japan",2],[0.424377,0.581299,"Egypt",2],[0.334053,0.529022,"Germany",2],[0.471483,0.607367,"Ethiopia",2],[0.368819,0.535206,"Italy",2],[0.488602,0.297476,"Colombia",2],[0.418928,0.508333,"Algeria",2],[0.373732,0.677647,"Uzbekistan",2],[0.519129,0.291539,"Peru",2],[0.478951,0.724205,"Sri Lanka",2],[0.347193,0.685495,"Kazakhstan",2],[0.434283,0.275464,"Cuba",2],[0.380987,0.490324,"Spain",3],[0.566634,0.338418,"Paraguay",2],[0.46129,0.253016,"El Salvador",2],[0.352438,0.788472,"Mongolia",2],[0.459357,0.459853,"Senegal",3],[0.260344,0.449706,"Iceland",2],[0.479461,0.917826,"Micronesia",2],[0.405096,0.320121,"Bermuda",2],[0.464286,0.84092,"Philippines",3],[0.403965,0.651568,"Iran",3],[0.353336,0.505245,"France",3],[0.317734,0.490898,"United Kingdom",3],[0.341349,0.586866,"Ukraine",3],[0.518164,0.599411,"Tanzania",3],[0.459043,0.581922,"Sudan",3],[0.495994,0.606754,"Kenya",3],[0.417736,0.733333,"Nepal",3],[0.402483,0.622708,"Iraq",3],[0.487294,0.784071,"Malaysia",3],[0.453962,0.633032,"Yemen",3],[0.37722,0.85302,"North Korea",3],[0.431373,0.836061,"Taiwan",3],[0.553552,0.629005,"Madagascar",3],[0.355821,0.568572,"Romania",3],[0.487173,0.536538,"Cameroon",3],[0.477734,0.484533,"Ivory Coast",3],[0.449928,0.5259,"Niger",3],[0.540769,0.576553,"Zambia",3],[0.453896,0.493639,"Mali",3],[0.503722,0.279537,"Ecuador",3],[0.548096,0.319469,"Bolivia",3],[0.382196,0.561077,"Greece",3],[0.456082,0.552821,"Chad",3],[0.399991,0.526111,"Tunisia",3],[0.445816,0.299008,"Haiti",3],[0.32378,0.576936,"Belarus",3],[0.377148,0.632742,"Azerbaijan",3],[0.409959,0.596832,"Israel",3],[0.515808,0.900691,"Papua New Guinea",3],[0.422609,0.550344,"Libya",3],[0.271403,0.572003,"Finland",3],[0.476135,0.274637,"Panama",3],[0.566383,0.54812,"Namibia",3],[0.307171,0.56876,"Latvia",3],[0.5025,0.532472,"Gabon",3],[0.469971,0.330322,"Trinidad and Tobago",3],[0.424684,0.640374,"Bahrain",3],[0.396158,0.59207,"Cyprus",3],[0.486535,0.337106,"Guyana",3],[0.534161,0.623009,"Comoros",3],[0.487728,0.818237,"Brunei",3],[0.546554,0.966964,"Vanuatu",3],[0.538622,0.021889,"Sāmoa",3],[0.499042,0.9824,"Kiribati",3],[0.512952,0.654039,"Seychelles",3],[0.456665,0.329541,"Dominica",3],[0.475563,0.969753,"Marshall Islands",3],[0.27867,0.480466,"Faroe Islands",3],[0.429841,0.750815,"Bangladesh",4],[0.458145,0.780091,"Thailand",4],[0.390485,0.854711,"South Korea",4],[0.329338,0.553151,"Poland",4],[0.49574,0.589491,"Uganda",4],[0.408791,0.479622,"Morocco",4],[0.400245,0.683996,"Afghanistan",4],[0.4777,0.316359,"Venezuela",4],[0.426323,0.617647,"Saudi Arabia",4],[0.554661,0.596985,"Mozambique",4],[0.397315,0.608471,"Syria",4],[0.466206,0.495311,"Burkina Faso",4],[0.593126,0.301892,"Chile",4],[0.537191,0.594251,"Malawi",4],[0.464876,0.791151,"Cambodia",4],[0.533232,0.548803,"Angola",4],[0.505458,0.583512,"Rwanda",4],[0.47004,0.470255,"Guinea",4],[0.476673,0.636343,"Somalia",4],[0.473407,0.506273,"Benin",4],[0.349293,0.539235,"Austria",4],[0.47807,0.582408,"South Sudan",4],[0.368936,0.570794,"Bulgaria",4],[0.383505,0.69671,"Tajikistan",4],[0.44323,0.787162,"Laos",4],[0.373046,0.707567,"Kyrgyzstan",4],[0.313024,0.528704,"Denmark",4],[0.28388,0.52441,"Norway",4],[0.455111,0.605555,"Eritrea",4],[0.38083,0.664979,"Turkmenistan",4],[0.49623,0.788387,"Singapore",4],[0.326373,0.477835,"Ireland",4],[0.431293,0.649999,"United Arab Emirates",4],[0.626922,0.980096,"New Zealand",4],[0.358283,0.543493,"Croatia",4],[0.314595,0.565972,"Lithuania",4],[0.414897,0.631939,"Kuwait",4],[0.596788,0.344388,"Uruguay",4],[0.442529,0.474334,"Mauritania",4],[0.448616,0.285015,"Jamaica",4],[0.566185,0.568314,"Botswana",4],[0.576579,0.58722,"Eswatini",4],[0.297204,0.570366,"Estonia",4],[0.557536,0.659918,"Mauritius",4],[0.524385,0.850176,"East Timor",4],[0.495518,0.529214,"Equatorial Guinea",4],[0.420342,0.751422,"Bhutan",4],[0.527174,0.952302,"Solomon Islands",4],[0.454966,0.43331,"Cape Verde",4],[0.393068,0.540132,"Malta",4],[0.489658,0.703401,"Maldives",4],[0.451719,0.25365,"Belize",4],[0.463147,0.334653,"Barbados",4],[0.366879,0.614528,"Abkhazia",4],[0.556471,0.013326,"Tonga",4],[0.342482,0.494067,"Jersey",4],[0.369187,0.50437,"Andorra",4],[0.475908,0.467111,"Sierra Leone",5],[0.374926,0.555555,"Albania",5],[0.466947,0.619015,"Djibouti",5],[0.352545,0.522867,"Switzerland",5],[0.364651,0.520632,"Monaco",5],[0.451561,0.766667,"Myanmar",5],[0.363027,0.557087,"Serbia",5],[0.350985,0.554184,"Hungary",5],[0.372407,0.622302,"Georgia",5],[0.464689,0.263073,"Nicaragua",5],[0.551206,0.997256,"Fiji",5],[0.477621,0.497,"Ghana",5],[0.329213,0.515651,"Netherlands",5],[0.552175,0.58263,"Zimbabwe",5],[0.336359,0.512963,"Belgium",5],[0.340249,0.542606,"Czechia",5],[0.509524,0.583146,"Burundi",5],[0.379801,0.477402,"Portugal",5],[0.457109,0.260901,"Honduras",5],[0.344515,0.554036,"Slovakia",5],[0.399887,0.599565,"Lebanon",5],[0.471308,0.266461,"Costa Rica",5],[0.480416,0.55555,"Central African Republic",5],[0.35055,0.579353,"Moldova",5],[0.502018,0.54345,"Congo",5],[0.484001,0.473984,"Liberia",5],[0.369013,0.558061,"Kosovo",5],[0.466945,0.45768,"Guinea-Bissau",5],[0.339939,0.517027,"Luxembourg",5],[0.428934,0.283333,"The Bahamas",5],[0.464995,0.305662,"Aruba",5],[0.45142,0.327901,"Antigua and Barbuda",5],[0.456163,0.24904,"Guatemala",5],[0.472848,0.627805,"Somaliland",5],[0.444633,0.276204,"Cayman Islands",5],[0.438162,0.301242,"Turks and Caicos Islands",5],[0.497302,0.519507,"São Tomé and Príncipe",6],[0.427217,0.642304,"Qatar",6],[0.445941,0.304714,"Dominican Republic",7],[0.372644,0.560325,"North Macedonia",6],[0.586157,0.578708,"Lesotho",6],[0.475515,0.502833,"Togo",6],[0.408811,0.602616,"Jordan",6],[0.362438,0.548878,"Bosnia and Herzegovina",6],[0.375772,0.624094,"Armenia",6],[0.355282,0.541154,"Slovenia",6],[0.462234,0.456972,"The Gambia",6],[0.488486,0.34423,"Suriname",6],[0.461219,0.330625,"Saint Lucia",6],[0.466034,0.328638,"Grenada",6],[0.320164,0.487336,"Isle of Man",6],[0.369914,0.622494,"South Ossetia",6],[0.367499,0.554217,"Montenegro",7],[0.463847,0.329787,"Saint Vincent and the Grenadines",7],[0.34148,0.492827,"Guernsey",7],[0.466086,0.308525,"Curacao",7],[0.395335,0.593403,"Northern Cyprus",8]],"cities":[],"paths":[],"lakes":[["M 506.17 286.48 506.35 285.57 506.86 285.51 506.97 286.52 506.99 285.69 508.29 285.83 508.3 284.98 508.77 284.66 508.99 284.95 508.95 284.23 509.59 284.4 509.33 283.52 510.16 283.98 509.83 283.53 510.52 283.89 510.4 283.42 510.73 283.97 510.52 283.39 510.95 282.76 512.62 281.65 514.29 281.43 514.51 281.93 516.2 282.21 516.79 281.55 517.26 282.48 517.86 282.21 518.06 283.32 517.39 284.21 517.75 284.84 516.92 286.17 514.2 286.82 513.32 287.98 513.93 289.07 514.55 289.28 513.57 289.43 512.93 288.92 511.81 288.89 511.66 289.7 512.98 290.29 513.96 292.12 513.93 293.5 514.79 293.4 515.34 294.47 517.22 294.82 517.12 295.25 516.78 294.77 517.07 295.32 516.5 296.71 516.79 298.35 517.66 299.97 517.25 302.83 517.67 303.27 517.61 302.85 519.18 302.8 520.31 303.46 519.12 303.03 518.75 303.69 519.41 304.17 518.29 304.18 518.44 303.73 517.99 304.51 518.18 305.12 518.15 304.66 519 304.7 519.23 305.41 519.37 305.08 519.37 305.52 520.04 305.85 519.59 308.84 520 311.6 514.8 312.49 512.67 311.66 511.55 310.32 509.93 310.09 508.9 309.34 508.47 306.09 508.94 305.14 508.59 305.19 508.91 304.94 509.34 305.4 509.46 304.75 509.86 304.95 509.5 304.32 509.96 302.34 510.83 301.77 511.93 302.21 511.93 301.82 511.26 301.12 510.1 301 509.02 298.81 505.49 293.95 506.11 291.16 505.47 291.45 504.96 290.21 503.87 289.34 504.24 289.37 504.08 288.95 504.6 288.84 504.56 288.41 504.84 288.67 505.85 285.72 506.17 286.48 Z M 520 311.6 520.05 311.93 518.63 311.88 520 311.6 Z",[0.6298374938964844,0.35178749084472655,0.6503874969482422,0.39061248779296875]],["M 636.84 261.34 636.76 260.82 637.96 259.94 638.44 259.19 639.11 258.67 640.09 257.39 640.84 255.88 642.34 252.93 642.65 250.95 643.35 250.18 644.29 250.25 643.78 253.12 643.69 254.12 643.29 255.57 642.93 257.54 642.71 258.3 642.22 257.69 641.33 258.97 641.78 259.19 641.69 259.86 641.02 260.08 640.4 261.34 639.56 262.14 638.49 262.73 636.98 263.09 635.78 264.11 634.98 265.12 633.87 265.98 632.93 266.19 631.78 266.05 630.58 265.69 630.27 265.19 630.8 264.76 632 264.76 633.47 264.25 634.4 263.24 635.51 262.36 636.13 262 636.84 261.34 Z",[0.7878375244140625,0.31272499084472655,0.8053624725341797,0.3327375030517578]],["M 180.1 257.13 182.32 255.59 182.66 256.64 183.01 259.02 185.79 266.41 186.14 268.91 185.05 269.76 184.62 268.69 183.92 266.05 181.78 263.58 179.47 259.8 180.1 257.13 Z",[0.22433750152587892,0.31948749542236327,0.23267499923706056,0.3372000122070313]],["M 144.44 223.28 142.65 220.56 142.09 219.41 142.57 219.55 145.66 221.11 148.1 222.94 151.6 221.03 153.24 218.73 155.11 217.94 156.89 218.93 157.58 219.24 157.52 219.83 155.33 220.69 152.72 221.49 149.71 225.22 147.47 227.44 143.69 228.37 141.24 228.45 137.64 226.37 137.01 226.14 136.92 225.4 137.38 225.23 140.44 226.3 142.94 224.6 144.44 223.28 Z",[0.17114999771118164,0.2724250030517578,0.19697500228881837,0.2855624961853027]],["M 224.32 293.19 223.64 293.34 222.75 293.05 223.42 292.01 224.1 291.64 225.67 291.19 227.54 290.77 228.53 291.36 229.15 290.68 229.85 290.25 230.33 290.48 230.58 290.96 230.71 292.16 229.04 293.17 227.22 292.91 225.48 292.8 224.32 293.19 Z",[0.2784375,0.3628125,0.28838750839233396,0.36667499542236326]],["M 215.29 296.73 216.51 296.92 218.16 295.97 219.13 295.13 219.79 294.99 221.01 295.29 221.6 294.82 222.69 294.44 224.62 294.07 224.67 294.36 222.75 296.17 221.07 297.03 219.93 297.44 218.61 298.26 217.01 298.65 215.9 298.5 214.53 297.89 215.29 296.73 Z",[0.2681624984741211,0.36758750915527344,0.28083749771118166,0.3733124923706055]],["M 200.89 278.06 201.79 276.74 203.05 276.21 203.55 275.39 204.05 274.95 206.11 275.63 207.64 275.71 208.18 276.16 208.92 278.06 211.41 278.56 211.02 279.49 211.9 280.46 211.52 281.7 212.45 282.11 211.99 283.2 211.31 283.07 210.84 282.16 208.66 282.44 206.69 283.16 205.12 281.93 203.86 281.52 204.58 279.79 202.62 280.88 200.83 281.93 199.12 282.76 197.76 281.64 195.53 282.32 195.54 281.84 197.04 280.47 198.62 279.15 200.89 278.06 Z",[0.24441249847412108,0.34368751525878904,0.26556249618530275,0.35400001525878905]],["M 475.22 399.72 475.86 400.71 475.72 402.36 474.62 403.35 473.89 404.35 474.77 405.11 473.5 405.66 473.23 405.4 471.94 405.53 470.95 406.03 470.33 405.18 470.75 403.62 470.81 402.28 470.7 401.42 471.72 400.12 473.12 399.81 474.07 399.28 475.22 399.72 Z",[0.5879124832153321,0.4990999984741211,0.5948249816894531,0.5075374984741211]],["M 466.3 226.77 468.56 224.21 472.28 227.27 473.21 229.44 472.92 230.16 472.44 229.93 472.41 231.39 470.44 231.27 470.02 232.67 469.13 232.64 469.13 231.67 467.85 229.49 467.78 228.52 466.3 226.77 Z",[0.5828749847412109,0.28026250839233396,0.5915124893188477,0.2908374977111816]],["M 575.54 282.2 576.1 282.53 575.31 283.42 574.32 283.66 571.57 283.34 568.03 282.98 567.7 282.45 567.57 283.1 566.47 283.31 566.16 284.26 565.06 284.6 564.67 287.81 563.19 285.85 563.2 285.23 563.86 284.57 563.73 284.02 564.49 283.95 564.65 283.24 566.53 281.98 569.34 282.1 571.51 282.54 573.02 282.52 573.99 283.1 574.22 282.49 575.54 282.2 Z",[0.7039875030517578,0.3524750137329102,0.7201249694824219,0.3597624969482422]],["M 468.46 419.13 467.7 418.95 467.93 418.09 467.28 417.5 466.99 416.26 465.64 415.04 464.87 413.44 465.27 412.5 464.67 411.25 465.07 407.68 465.89 409.83 465.78 410.89 466.2 411.22 466.13 412.17 466.56 413.05 466.05 413.9 467.84 415.42 468.01 416.81 469.31 419.48 468.94 419.6 468.46 419.13 Z",[0.580837516784668,0.5095999908447265,0.5866374969482422,0.5245000076293945]],["M 478.36 432.06 478.3 432.35 477.51 431.45 477.13 432.03 476.77 431.53 476.78 430.67 476.27 430.01 476.29 429.01 475.63 427.34 476.27 426.08 476.13 423.35 475.35 421.89 475.55 421.2 476.72 422.4 476.91 424.78 477.64 425.65 477.1 427.82 477.48 430.74 477.9 430.84 478.36 432.06 Z",[0.5941875076293945,0.5265000152587891,0.5979499816894531,0.5404375076293946]],["M 431.07 235.81 431.08 236.33 430.93 237.12 429.52 238.38 428.51 238.8 427.69 238.81 427.86 237.66 427.83 237.21 428.22 236.9 428.95 236.73 429.32 236.14 430.2 235.24 431.07 235.81 Z",[0.5346125030517578,0.2940500068664551,0.5388499832153321,0.29851249694824217]],["M 220.65 338.17 220.15 338.09 220.18 337.48 220.68 337.56 220.65 338.17 Z",[0.27518749237060547,0.42185001373291015,0.27584999084472656,0.422712516784668]],["M 211.43 375.07 210.47 375.01 209.35 374.25 209.14 373.36 209.85 373.27 211.03 374.22 211.43 375.07 Z",[0.26142499923706053,0.46658748626708985,0.2642874908447266,0.46883750915527345]],["M 482.54 373.48 482.26 373.06 482.76 372.6 483.37 372.77 483.29 373.53 482.97 373.79 482.54 373.48 Z",[0.6028250122070312,0.46575000762939456,0.6042124938964843,0.4672375106811523]],["M 245.76 436.32 245.05 435.86 244.48 435.42 244.72 435.26 244.74 434.98 244.7 434.54 245.34 434.67 246.7 435.76 246.76 435.83 247.23 436.85 246.88 437.2 246.66 437.27 246.46 437.1 246.26 436.96 246.11 436.55 245.76 436.32 Z",[0.30559999465942383,0.5431750106811524,0.3090374946594238,0.5465874862670899]],["M 179.1 260.14 178.78 260.16 178.21 260.07 176.82 259.55 176.43 258.63 177.03 257.83 176.83 257.21 176.88 257.07 177.05 256.51 177.25 255.99 177.79 256.05 177.67 256.49 177.37 257.13 178.06 257.14 177.98 257.54 177.65 258.96 178.52 259.51 179.13 259.61 179.1 260.14 Z",[0.22053749084472657,0.31998750686645505,0.22391250610351562,0.3252000045776367]],["M 479.37 221.82 480.12 224.49 480.87 226.54 480.24 227.74 478.56 228.04 477.48 227.27 478.24 227.28 479.06 227.41 478.13 225.99 477.46 225.25 476.64 223.78 476.14 222.11 476.2 221.73 477.03 222.06 476.95 220.99 477.41 221.74 477.96 222.48 478.26 222.23 478.81 221.93 478.09 220.82 476.92 219.49 477.77 219.56 478.3 219.92 479.37 221.82 Z",[0.5951750183105469,0.2743625068664551,0.6010874938964844,0.28504999160766603]],["M 150.7 298.93 150.8 299.52 150.73 300.38 149.6 299.56 149.54 299.45 149.16 298.08 149.8 298.64 150.21 298.94 150.62 298.67 150.7 298.93 Z",[0.18645000457763672,0.37259998321533205,0.18850000381469725,0.37547500610351564]],["M 138.31 201.61 137.84 203.62 137.54 204.1 133.96 204.27 133.9 204.71 134.08 205.39 134 206.24 130.32 208.82 130.36 208.22 131.23 206.19 130.98 205.83 127.63 208.03 126.15 207.24 126.27 206.5 128.16 203.96 128.1 203.37 122.33 202.56 122.45 202 134.47 197.43 134.76 197.97 132.94 200.27 138.65 199.74 138.64 200.52 138.31 201.61 Z",[0.15291250228881836,0.24678749084472656,0.17331249237060548,0.26102500915527344]],["M 156.33 236.54 153.14 238.58 152.89 238.05 152.98 237.73 157.56 234.3 163.23 235.31 163.23 235.43 156.33 236.54 Z",[0.19111249923706056,0.2928750038146973,0.20403749465942383,0.2982250022888184]],["M 173.57 240.89 174.35 241.5 173.4 243.66 173.48 244.14 170.66 247.74 170.48 247.48 170.78 246.29 170.94 246.26 171.08 246.85 172.05 245.34 171.53 243.91 171.53 243.18 173.05 240.87 173.57 240.89 Z",[0.21309999465942384,0.30108749389648437,0.21793750762939454,0.3096750068664551]],["M 211.27 285.28 211.66 284.85 211.73 284.87 213.69 284.58 212.59 283.3 213 282.82 213.44 283.54 215.11 283.94 216.8 283.97 218.6 284.3 220.58 284.92 221.31 285.92 222.75 288.33 222.03 289.36 220.23 288.93 219.11 286.99 219.39 288.97 218.33 290.7 218.44 292.16 218.26 293.01 216.82 294.02 216.71 292.77 216.31 290.99 215.49 290.68 214.11 292.04 213.67 292.01 213.56 291.24 214.78 290 214.98 288.58 214.8 287.15 213.16 285.92 211.27 285.28 Z",[0.2640875053405762,0.35352500915527346,0.2784375,0.36752498626708985]],["M 211.66 284.85 211.27 285.28 210.96 286.49 210.47 286.81 210.07 288.36 209.87 287.31 208.98 288.06 208.42 289.11 207.84 290.64 207.73 291.94 208.47 293.83 208.41 295.83 207.51 297.29 207.06 297.7 206.46 298.03 205.7 298.05 205.5 297.84 204.9 296.27 204.88 295.49 204.94 294.75 204.66 293.26 205.08 291.52 205.59 289.37 206.74 286.95 206.4 286.96 204.77 288.99 204.47 288.62 205.34 287.49 206.67 285.44 208.18 285.15 209.91 284.51 211.66 284.85 Z",[0.2555875015258789,0.35563751220703127,0.2645750045776367,0.37256248474121095]]]}
4 |
5 | // The rest of this file is licensed under the MIT license
6 | function drawPlaces(tile, coords, places, opts) {
7 | var ctx = tile.getContext('2d', {alpha: false});
8 |
9 | if (!places.path2ds)
10 | places.path2ds = places.paths.map(p => [new Path2D(p[0]), p[1]])
11 |
12 | if (!places.lakepath2ds)
13 | places.lakepath2ds = places.lakes.map(p => [new Path2D(p[0]), p[1]])
14 |
15 | let vwidth = 800, vheight = 800
16 |
17 | var size = {x: tile.width, y: tile.height};
18 | let margin1 = 2/size.x, margin2 = 35/size.x, margin3 = 50/size.x, N = Math.pow(2, coords.z);
19 |
20 | let lbound = coords.x / N, rbound = lbound + 1/N, tbound = coords.y / N, bbound = tbound + 1/N
21 |
22 | ctx.fillStyle = opts.backgroundColor || (places.path2ds.length ? "#aad3df" : 'white')
23 | ctx.fillRect(0, 0, size.x, size.y)
24 |
25 | ctx.translate(-size.x*coords.x, -size.x*coords.y)
26 | ctx.scale(size.x*N/vwidth,size.y*N/vheight)
27 | ctx.strokeStyle = opts.borderColor || '#b4a6ae'
28 | ctx.fillStyle = opts.borderFillColor || '#fdf9f1'
29 | ctx.lineWidth = (opts.borderWidth||4)/N
30 | ctx.lineJoin = 'round'
31 |
32 | let pathsToDraw = new Path2D()
33 |
34 | for (let [p, bounds] of places.path2ds) { // 60-100 fails
35 | if (!(bounds[0] > rbound || bounds[2] < lbound || bounds[1] > bbound || bounds[3] < tbound)) {
36 | pathsToDraw.addPath(p)
37 | }
38 | }
39 |
40 | if (opts.borderFillColor != 'transparent')
41 | ctx.fill(pathsToDraw)
42 | if (opts.borderStrokeColor != 'transparent')
43 | ctx.stroke(pathsToDraw)
44 |
45 | ctx.fillStyle = opts.backgroundColor || '#aad3df'
46 |
47 | let lakePathsToDraw = new Path2D()
48 |
49 | for (let [p, bounds] of places.lakepath2ds) { // 60-100 fails
50 | if (!(bounds[0] > rbound || bounds[2] < lbound || bounds[1] > bbound || bounds[3] < tbound)) {
51 | lakePathsToDraw.addPath(p)
52 | }
53 | }
54 |
55 | if (opts.backgroundColor != 'transparent')
56 | ctx.fill(lakePathsToDraw)
57 | if (opts.borderStrokeColor != 'transparent')
58 | ctx.stroke(lakePathsToDraw)
59 |
60 | ctx.resetTransform()
61 |
62 | let dotColor = opts.dotColor || (places.path2ds.length ? 'transparent' : 'red')
63 | ctx.fillStyle = dotColor
64 |
65 | if (dotColor != 'transparent')
66 | for (let [yc, xc, name, zoom] of places.cities) {
67 | let y = yc * N - coords.y, x = xc * N - coords.x
68 | if (zoom > coords.z && y > -margin1 && y < 1+margin1 && x > -margin1 && x < 1+margin1) {
69 | let xS = size.x * x, yS = size.y * y
70 | ctx.fillRect(xS-1,yS-1,2,2)
71 | }
72 | }
73 |
74 | ctx.strokeStyle = opts.textStrokeColor || 'rgba(255,255,255,.8)'
75 | ctx.lineWidth = opts.textStrokeWidth || 3
76 | ctx.textAlign = 'center'
77 | ctx.fillStyle = opts.textFillColor || "black";
78 | ctx.font = opts.cityFont || '12px Arial, Helvetica, Ubuntu, sans-serif'
79 |
80 | for (let [yc, xc, name, zoom] of places.cities) {
81 | if (zoom > coords.z) continue
82 |
83 | let y = yc * N - coords.y, x = xc * N - coords.x
84 | if (y > -margin2 && y < 1+margin2 && x > -margin2 && x < 1+margin2) {
85 |
86 | let xS = size.x * x, yS = size.y * y
87 | ctx.strokeText(name, xS, yS, 70)
88 | ctx.fillText(name, xS, yS, 70)
89 | }
90 | }
91 |
92 | ctx.font = opts.countryFont || 'bold 14px Arial, Helvetica, Ubuntu, sans-serif'
93 |
94 | for (let [yc, xc, name, zoom] of places.countries) {
95 | if (zoom > coords.z || coords.z > 8) continue
96 |
97 | let y = yc * N - coords.y, x = xc * N - coords.x
98 | if (y > -margin3 && y < 1+margin3 && x > -margin3 && x < 1+margin3) {
99 | let xS = size.x * x, yS = size.y * y
100 | ctx.strokeText(name, xS, yS, 100)
101 | ctx.fillText(name, xS, yS, 100)
102 | }
103 | }
104 | return tile;
105 | }
106 |
107 |
108 | L.GridLayer.TinyWorld = L.GridLayer.extend({
109 | createTile: function(xyz){
110 | // create a element for drawing
111 | let tile = L.DomUtil.create('canvas', 'leaflet-tile');
112 |
113 | var tileSize = this.getTileSize();
114 | tile.setAttribute('width', tileSize.x);
115 | tile.setAttribute('height', tileSize.y);
116 |
117 | return drawPlaces(tile, xyz, places, this.options)
118 | },
119 | getAttribution: function() {
120 | return '© tinyworldmap , OpenStreetMap '
121 | }
122 | });
123 | })()
124 |
--------------------------------------------------------------------------------
/dist/tiny-world-countries.json:
--------------------------------------------------------------------------------
1 | {"countries":[[0.396098,0.791666,"China",0],[0.379362,0.220984,"United States",0],[0.5069,0.827473,"Indonesia",0],[0.528861,0.352222,"Brazil",0],[0.26229,0.771515,"Russia",0],[0.382323,0.597014,"Turkey",1],[0.292197,0.540336,"Sweden",1],[0.146465,0.381076,"Greenland",0],[0.473208,0.522222,"Nigeria",1],[0.432331,0.216645,"Mexico",1],[0.455178,0.799903,"Vietnam",1],[0.583651,0.569421,"South Africa",1],[0.60389,0.319535,"Argentina",1],[0.284376,0.200023,"Canada",1],[0.571073,0.874319,"Australia",1],[0.440315,0.658344,"Oman",1],[0.508286,0.566173,"Congo",2],[0.436276,0.718522,"India",2],[0.411512,0.69791,"Pakistan",2],[0.390705,0.886776,"Japan",2],[0.424377,0.581299,"Egypt",2],[0.334053,0.529022,"Germany",2],[0.471483,0.607367,"Ethiopia",2],[0.368819,0.535206,"Italy",2],[0.488602,0.297476,"Colombia",2],[0.418928,0.508333,"Algeria",2],[0.373732,0.677647,"Uzbekistan",2],[0.519129,0.291539,"Peru",2],[0.478951,0.724205,"Sri Lanka",2],[0.347193,0.685495,"Kazakhstan",2],[0.434283,0.275464,"Cuba",2],[0.380987,0.490324,"Spain",3],[0.566634,0.338418,"Paraguay",2],[0.46129,0.253016,"El Salvador",2],[0.352438,0.788472,"Mongolia",2],[0.459357,0.459853,"Senegal",3],[0.260344,0.449706,"Iceland",2],[0.479461,0.917826,"Micronesia",2],[0.405096,0.320121,"Bermuda",2],[0.464286,0.84092,"Philippines",3],[0.403965,0.651568,"Iran",3],[0.353336,0.505245,"France",3],[0.317734,0.490898,"United Kingdom",3],[0.341349,0.586866,"Ukraine",3],[0.518164,0.599411,"Tanzania",3],[0.459043,0.581922,"Sudan",3],[0.495994,0.606754,"Kenya",3],[0.417736,0.733333,"Nepal",3],[0.402483,0.622708,"Iraq",3],[0.487294,0.784071,"Malaysia",3],[0.453962,0.633032,"Yemen",3],[0.37722,0.85302,"North Korea",3],[0.431373,0.836061,"Taiwan",3],[0.553552,0.629005,"Madagascar",3],[0.355821,0.568572,"Romania",3],[0.487173,0.536538,"Cameroon",3],[0.477734,0.484533,"Ivory Coast",3],[0.449928,0.5259,"Niger",3],[0.540769,0.576553,"Zambia",3],[0.453896,0.493639,"Mali",3],[0.503722,0.279537,"Ecuador",3],[0.548096,0.319469,"Bolivia",3],[0.382196,0.561077,"Greece",3],[0.456082,0.552821,"Chad",3],[0.399991,0.526111,"Tunisia",3],[0.445816,0.299008,"Haiti",3],[0.32378,0.576936,"Belarus",3],[0.377148,0.632742,"Azerbaijan",3],[0.409959,0.596832,"Israel",3],[0.515808,0.900691,"Papua New Guinea",3],[0.422609,0.550344,"Libya",3],[0.271403,0.572003,"Finland",3],[0.476135,0.274637,"Panama",3],[0.566383,0.54812,"Namibia",3],[0.307171,0.56876,"Latvia",3],[0.5025,0.532472,"Gabon",3],[0.469971,0.330322,"Trinidad and Tobago",3],[0.424684,0.640374,"Bahrain",3],[0.396158,0.59207,"Cyprus",3],[0.486535,0.337106,"Guyana",3],[0.534161,0.623009,"Comoros",3],[0.487728,0.818237,"Brunei",3],[0.546554,0.966964,"Vanuatu",3],[0.538622,0.021889,"Sāmoa",3],[0.499042,0.9824,"Kiribati",3],[0.512952,0.654039,"Seychelles",3],[0.456665,0.329541,"Dominica",3],[0.475563,0.969753,"Marshall Islands",3],[0.27867,0.480466,"Faroe Islands",3],[0.429841,0.750815,"Bangladesh",4],[0.458145,0.780091,"Thailand",4],[0.390485,0.854711,"South Korea",4],[0.329338,0.553151,"Poland",4],[0.49574,0.589491,"Uganda",4],[0.408791,0.479622,"Morocco",4],[0.400245,0.683996,"Afghanistan",4],[0.4777,0.316359,"Venezuela",4],[0.426323,0.617647,"Saudi Arabia",4],[0.554661,0.596985,"Mozambique",4],[0.397315,0.608471,"Syria",4],[0.466206,0.495311,"Burkina Faso",4],[0.593126,0.301892,"Chile",4],[0.537191,0.594251,"Malawi",4],[0.464876,0.791151,"Cambodia",4],[0.533232,0.548803,"Angola",4],[0.505458,0.583512,"Rwanda",4],[0.47004,0.470255,"Guinea",4],[0.476673,0.636343,"Somalia",4],[0.473407,0.506273,"Benin",4],[0.349293,0.539235,"Austria",4],[0.47807,0.582408,"South Sudan",4],[0.368936,0.570794,"Bulgaria",4],[0.383505,0.69671,"Tajikistan",4],[0.44323,0.787162,"Laos",4],[0.373046,0.707567,"Kyrgyzstan",4],[0.313024,0.528704,"Denmark",4],[0.28388,0.52441,"Norway",4],[0.455111,0.605555,"Eritrea",4],[0.38083,0.664979,"Turkmenistan",4],[0.49623,0.788387,"Singapore",4],[0.326373,0.477835,"Ireland",4],[0.431293,0.649999,"United Arab Emirates",4],[0.626922,0.980096,"New Zealand",4],[0.358283,0.543493,"Croatia",4],[0.314595,0.565972,"Lithuania",4],[0.414897,0.631939,"Kuwait",4],[0.596788,0.344388,"Uruguay",4],[0.442529,0.474334,"Mauritania",4],[0.448616,0.285015,"Jamaica",4],[0.566185,0.568314,"Botswana",4],[0.576579,0.58722,"Eswatini",4],[0.297204,0.570366,"Estonia",4],[0.557536,0.659918,"Mauritius",4],[0.524385,0.850176,"East Timor",4],[0.495518,0.529214,"Equatorial Guinea",4],[0.420342,0.751422,"Bhutan",4],[0.527174,0.952302,"Solomon Islands",4],[0.454966,0.43331,"Cape Verde",4],[0.393068,0.540132,"Malta",4],[0.489658,0.703401,"Maldives",4],[0.451719,0.25365,"Belize",4],[0.463147,0.334653,"Barbados",4],[0.366879,0.614528,"Abkhazia",4],[0.556471,0.013326,"Tonga",4],[0.342482,0.494067,"Jersey",4],[0.369187,0.50437,"Andorra",4],[0.475908,0.467111,"Sierra Leone",5],[0.374926,0.555555,"Albania",5],[0.466947,0.619015,"Djibouti",5],[0.352545,0.522867,"Switzerland",5],[0.364651,0.520632,"Monaco",5],[0.451561,0.766667,"Myanmar",5],[0.363027,0.557087,"Serbia",5],[0.350985,0.554184,"Hungary",5],[0.372407,0.622302,"Georgia",5],[0.464689,0.263073,"Nicaragua",5],[0.551206,0.997256,"Fiji",5],[0.477621,0.497,"Ghana",5],[0.329213,0.515651,"Netherlands",5],[0.552175,0.58263,"Zimbabwe",5],[0.336359,0.512963,"Belgium",5],[0.340249,0.542606,"Czechia",5],[0.509524,0.583146,"Burundi",5],[0.379801,0.477402,"Portugal",5],[0.457109,0.260901,"Honduras",5],[0.344515,0.554036,"Slovakia",5],[0.399887,0.599565,"Lebanon",5],[0.471308,0.266461,"Costa Rica",5],[0.480416,0.55555,"Central African Republic",5],[0.35055,0.579353,"Moldova",5],[0.502018,0.54345,"Congo",5],[0.484001,0.473984,"Liberia",5],[0.369013,0.558061,"Kosovo",5],[0.466945,0.45768,"Guinea-Bissau",5],[0.339939,0.517027,"Luxembourg",5],[0.428934,0.283333,"The Bahamas",5],[0.464995,0.305662,"Aruba",5],[0.45142,0.327901,"Antigua and Barbuda",5],[0.456163,0.24904,"Guatemala",5],[0.472848,0.627805,"Somaliland",5],[0.444633,0.276204,"Cayman Islands",5],[0.438162,0.301242,"Turks and Caicos Islands",5],[0.497302,0.519507,"São Tomé and Príncipe",6],[0.427217,0.642304,"Qatar",6],[0.445941,0.304714,"Dominican Republic",7],[0.372644,0.560325,"North Macedonia",6],[0.586157,0.578708,"Lesotho",6],[0.475515,0.502833,"Togo",6],[0.408811,0.602616,"Jordan",6],[0.362438,0.548878,"Bosnia and Herzegovina",6],[0.375772,0.624094,"Armenia",6],[0.355282,0.541154,"Slovenia",6],[0.462234,0.456972,"The Gambia",6],[0.488486,0.34423,"Suriname",6],[0.461219,0.330625,"Saint Lucia",6],[0.466034,0.328638,"Grenada",6],[0.320164,0.487336,"Isle of Man",6],[0.369914,0.622494,"South Ossetia",6],[0.367499,0.554217,"Montenegro",7],[0.463847,0.329787,"Saint Vincent and the Grenadines",7],[0.34148,0.492827,"Guernsey",7],[0.466086,0.308525,"Curacao",7],[0.395335,0.593403,"Northern Cyprus",8]],"cities":[],"paths":[],"lakes":[["M 506.17 286.48 506.35 285.57 506.86 285.51 506.97 286.52 506.99 285.69 508.29 285.83 508.3 284.98 508.77 284.66 508.99 284.95 508.95 284.23 509.59 284.4 509.33 283.52 510.16 283.98 509.83 283.53 510.52 283.89 510.4 283.42 510.73 283.97 510.52 283.39 510.95 282.76 512.62 281.65 514.29 281.43 514.51 281.93 516.2 282.21 516.79 281.55 517.26 282.48 517.86 282.21 518.06 283.32 517.39 284.21 517.75 284.84 516.92 286.17 514.2 286.82 513.32 287.98 513.93 289.07 514.55 289.28 513.57 289.43 512.93 288.92 511.81 288.89 511.66 289.7 512.98 290.29 513.96 292.12 513.93 293.5 514.79 293.4 515.34 294.47 517.22 294.82 517.12 295.25 516.78 294.77 517.07 295.32 516.5 296.71 516.79 298.35 517.66 299.97 517.25 302.83 517.67 303.27 517.61 302.85 519.18 302.8 520.31 303.46 519.12 303.03 518.75 303.69 519.41 304.17 518.29 304.18 518.44 303.73 517.99 304.51 518.18 305.12 518.15 304.66 519 304.7 519.23 305.41 519.37 305.08 519.37 305.52 520.04 305.85 519.59 308.84 520 311.6 514.8 312.49 512.67 311.66 511.55 310.32 509.93 310.09 508.9 309.34 508.47 306.09 508.94 305.14 508.59 305.19 508.91 304.94 509.34 305.4 509.46 304.75 509.86 304.95 509.5 304.32 509.96 302.34 510.83 301.77 511.93 302.21 511.93 301.82 511.26 301.12 510.1 301 509.02 298.81 505.49 293.95 506.11 291.16 505.47 291.45 504.96 290.21 503.87 289.34 504.24 289.37 504.08 288.95 504.6 288.84 504.56 288.41 504.84 288.67 505.85 285.72 506.17 286.48 Z M 520 311.6 520.05 311.93 518.63 311.88 520 311.6 Z",[0.6298374938964844,0.35178749084472655,0.6503874969482422,0.39061248779296875]],["M 636.84 261.34 636.76 260.82 637.96 259.94 638.44 259.19 639.11 258.67 640.09 257.39 640.84 255.88 642.34 252.93 642.65 250.95 643.35 250.18 644.29 250.25 643.78 253.12 643.69 254.12 643.29 255.57 642.93 257.54 642.71 258.3 642.22 257.69 641.33 258.97 641.78 259.19 641.69 259.86 641.02 260.08 640.4 261.34 639.56 262.14 638.49 262.73 636.98 263.09 635.78 264.11 634.98 265.12 633.87 265.98 632.93 266.19 631.78 266.05 630.58 265.69 630.27 265.19 630.8 264.76 632 264.76 633.47 264.25 634.4 263.24 635.51 262.36 636.13 262 636.84 261.34 Z",[0.7878375244140625,0.31272499084472655,0.8053624725341797,0.3327375030517578]],["M 180.1 257.13 182.32 255.59 182.66 256.64 183.01 259.02 185.79 266.41 186.14 268.91 185.05 269.76 184.62 268.69 183.92 266.05 181.78 263.58 179.47 259.8 180.1 257.13 Z",[0.22433750152587892,0.31948749542236327,0.23267499923706056,0.3372000122070313]],["M 144.44 223.28 142.65 220.56 142.09 219.41 142.57 219.55 145.66 221.11 148.1 222.94 151.6 221.03 153.24 218.73 155.11 217.94 156.89 218.93 157.58 219.24 157.52 219.83 155.33 220.69 152.72 221.49 149.71 225.22 147.47 227.44 143.69 228.37 141.24 228.45 137.64 226.37 137.01 226.14 136.92 225.4 137.38 225.23 140.44 226.3 142.94 224.6 144.44 223.28 Z",[0.17114999771118164,0.2724250030517578,0.19697500228881837,0.2855624961853027]],["M 224.32 293.19 223.64 293.34 222.75 293.05 223.42 292.01 224.1 291.64 225.67 291.19 227.54 290.77 228.53 291.36 229.15 290.68 229.85 290.25 230.33 290.48 230.58 290.96 230.71 292.16 229.04 293.17 227.22 292.91 225.48 292.8 224.32 293.19 Z",[0.2784375,0.3628125,0.28838750839233396,0.36667499542236326]],["M 215.29 296.73 216.51 296.92 218.16 295.97 219.13 295.13 219.79 294.99 221.01 295.29 221.6 294.82 222.69 294.44 224.62 294.07 224.67 294.36 222.75 296.17 221.07 297.03 219.93 297.44 218.61 298.26 217.01 298.65 215.9 298.5 214.53 297.89 215.29 296.73 Z",[0.2681624984741211,0.36758750915527344,0.28083749771118166,0.3733124923706055]],["M 200.89 278.06 201.79 276.74 203.05 276.21 203.55 275.39 204.05 274.95 206.11 275.63 207.64 275.71 208.18 276.16 208.92 278.06 211.41 278.56 211.02 279.49 211.9 280.46 211.52 281.7 212.45 282.11 211.99 283.2 211.31 283.07 210.84 282.16 208.66 282.44 206.69 283.16 205.12 281.93 203.86 281.52 204.58 279.79 202.62 280.88 200.83 281.93 199.12 282.76 197.76 281.64 195.53 282.32 195.54 281.84 197.04 280.47 198.62 279.15 200.89 278.06 Z",[0.24441249847412108,0.34368751525878904,0.26556249618530275,0.35400001525878905]],["M 475.22 399.72 475.86 400.71 475.72 402.36 474.62 403.35 473.89 404.35 474.77 405.11 473.5 405.66 473.23 405.4 471.94 405.53 470.95 406.03 470.33 405.18 470.75 403.62 470.81 402.28 470.7 401.42 471.72 400.12 473.12 399.81 474.07 399.28 475.22 399.72 Z",[0.5879124832153321,0.4990999984741211,0.5948249816894531,0.5075374984741211]],["M 466.3 226.77 468.56 224.21 472.28 227.27 473.21 229.44 472.92 230.16 472.44 229.93 472.41 231.39 470.44 231.27 470.02 232.67 469.13 232.64 469.13 231.67 467.85 229.49 467.78 228.52 466.3 226.77 Z",[0.5828749847412109,0.28026250839233396,0.5915124893188477,0.2908374977111816]],["M 575.54 282.2 576.1 282.53 575.31 283.42 574.32 283.66 571.57 283.34 568.03 282.98 567.7 282.45 567.57 283.1 566.47 283.31 566.16 284.26 565.06 284.6 564.67 287.81 563.19 285.85 563.2 285.23 563.86 284.57 563.73 284.02 564.49 283.95 564.65 283.24 566.53 281.98 569.34 282.1 571.51 282.54 573.02 282.52 573.99 283.1 574.22 282.49 575.54 282.2 Z",[0.7039875030517578,0.3524750137329102,0.7201249694824219,0.3597624969482422]],["M 468.46 419.13 467.7 418.95 467.93 418.09 467.28 417.5 466.99 416.26 465.64 415.04 464.87 413.44 465.27 412.5 464.67 411.25 465.07 407.68 465.89 409.83 465.78 410.89 466.2 411.22 466.13 412.17 466.56 413.05 466.05 413.9 467.84 415.42 468.01 416.81 469.31 419.48 468.94 419.6 468.46 419.13 Z",[0.580837516784668,0.5095999908447265,0.5866374969482422,0.5245000076293945]],["M 478.36 432.06 478.3 432.35 477.51 431.45 477.13 432.03 476.77 431.53 476.78 430.67 476.27 430.01 476.29 429.01 475.63 427.34 476.27 426.08 476.13 423.35 475.35 421.89 475.55 421.2 476.72 422.4 476.91 424.78 477.64 425.65 477.1 427.82 477.48 430.74 477.9 430.84 478.36 432.06 Z",[0.5941875076293945,0.5265000152587891,0.5979499816894531,0.5404375076293946]],["M 431.07 235.81 431.08 236.33 430.93 237.12 429.52 238.38 428.51 238.8 427.69 238.81 427.86 237.66 427.83 237.21 428.22 236.9 428.95 236.73 429.32 236.14 430.2 235.24 431.07 235.81 Z",[0.5346125030517578,0.2940500068664551,0.5388499832153321,0.29851249694824217]],["M 220.65 338.17 220.15 338.09 220.18 337.48 220.68 337.56 220.65 338.17 Z",[0.27518749237060547,0.42185001373291015,0.27584999084472656,0.422712516784668]],["M 211.43 375.07 210.47 375.01 209.35 374.25 209.14 373.36 209.85 373.27 211.03 374.22 211.43 375.07 Z",[0.26142499923706053,0.46658748626708985,0.2642874908447266,0.46883750915527345]],["M 482.54 373.48 482.26 373.06 482.76 372.6 483.37 372.77 483.29 373.53 482.97 373.79 482.54 373.48 Z",[0.6028250122070312,0.46575000762939456,0.6042124938964843,0.4672375106811523]],["M 245.76 436.32 245.05 435.86 244.48 435.42 244.72 435.26 244.74 434.98 244.7 434.54 245.34 434.67 246.7 435.76 246.76 435.83 247.23 436.85 246.88 437.2 246.66 437.27 246.46 437.1 246.26 436.96 246.11 436.55 245.76 436.32 Z",[0.30559999465942383,0.5431750106811524,0.3090374946594238,0.5465874862670899]],["M 179.1 260.14 178.78 260.16 178.21 260.07 176.82 259.55 176.43 258.63 177.03 257.83 176.83 257.21 176.88 257.07 177.05 256.51 177.25 255.99 177.79 256.05 177.67 256.49 177.37 257.13 178.06 257.14 177.98 257.54 177.65 258.96 178.52 259.51 179.13 259.61 179.1 260.14 Z",[0.22053749084472657,0.31998750686645505,0.22391250610351562,0.3252000045776367]],["M 479.37 221.82 480.12 224.49 480.87 226.54 480.24 227.74 478.56 228.04 477.48 227.27 478.24 227.28 479.06 227.41 478.13 225.99 477.46 225.25 476.64 223.78 476.14 222.11 476.2 221.73 477.03 222.06 476.95 220.99 477.41 221.74 477.96 222.48 478.26 222.23 478.81 221.93 478.09 220.82 476.92 219.49 477.77 219.56 478.3 219.92 479.37 221.82 Z",[0.5951750183105469,0.2743625068664551,0.6010874938964844,0.28504999160766603]],["M 150.7 298.93 150.8 299.52 150.73 300.38 149.6 299.56 149.54 299.45 149.16 298.08 149.8 298.64 150.21 298.94 150.62 298.67 150.7 298.93 Z",[0.18645000457763672,0.37259998321533205,0.18850000381469725,0.37547500610351564]],["M 138.31 201.61 137.84 203.62 137.54 204.1 133.96 204.27 133.9 204.71 134.08 205.39 134 206.24 130.32 208.82 130.36 208.22 131.23 206.19 130.98 205.83 127.63 208.03 126.15 207.24 126.27 206.5 128.16 203.96 128.1 203.37 122.33 202.56 122.45 202 134.47 197.43 134.76 197.97 132.94 200.27 138.65 199.74 138.64 200.52 138.31 201.61 Z",[0.15291250228881836,0.24678749084472656,0.17331249237060548,0.26102500915527344]],["M 156.33 236.54 153.14 238.58 152.89 238.05 152.98 237.73 157.56 234.3 163.23 235.31 163.23 235.43 156.33 236.54 Z",[0.19111249923706056,0.2928750038146973,0.20403749465942383,0.2982250022888184]],["M 173.57 240.89 174.35 241.5 173.4 243.66 173.48 244.14 170.66 247.74 170.48 247.48 170.78 246.29 170.94 246.26 171.08 246.85 172.05 245.34 171.53 243.91 171.53 243.18 173.05 240.87 173.57 240.89 Z",[0.21309999465942384,0.30108749389648437,0.21793750762939454,0.3096750068664551]],["M 211.27 285.28 211.66 284.85 211.73 284.87 213.69 284.58 212.59 283.3 213 282.82 213.44 283.54 215.11 283.94 216.8 283.97 218.6 284.3 220.58 284.92 221.31 285.92 222.75 288.33 222.03 289.36 220.23 288.93 219.11 286.99 219.39 288.97 218.33 290.7 218.44 292.16 218.26 293.01 216.82 294.02 216.71 292.77 216.31 290.99 215.49 290.68 214.11 292.04 213.67 292.01 213.56 291.24 214.78 290 214.98 288.58 214.8 287.15 213.16 285.92 211.27 285.28 Z",[0.2640875053405762,0.35352500915527346,0.2784375,0.36752498626708985]],["M 211.66 284.85 211.27 285.28 210.96 286.49 210.47 286.81 210.07 288.36 209.87 287.31 208.98 288.06 208.42 289.11 207.84 290.64 207.73 291.94 208.47 293.83 208.41 295.83 207.51 297.29 207.06 297.7 206.46 298.03 205.7 298.05 205.5 297.84 204.9 296.27 204.88 295.49 204.94 294.75 204.66 293.26 205.08 291.52 205.59 289.37 206.74 286.95 206.4 286.96 204.77 288.99 204.47 288.62 205.34 287.49 206.67 285.44 208.18 285.15 209.91 284.51 211.66 284.85 Z",[0.2555875015258789,0.35563751220703127,0.2645750045776367,0.37256248474121095]]]}
--------------------------------------------------------------------------------
/dist/v2/tiny-world-countries.js:
--------------------------------------------------------------------------------
1 | (function(){
2 | // This dataset is licensed under the ODbL license; attribute tinyworldmap and OpenStreetMap
3 | let places = {"countries":[[0.380987,0.490324,"Spain",0],[0.396098,0.791666,"China",0],[0.5069,0.827473,"Indonesia",0],[0.528861,0.352222,"Brazil",0],[0.26229,0.771515,"Russia",0],[0.284376,0.200023,"Canada",0],[0.260344,0.449706,"Iceland",0],[0.146465,0.381076,"Greenland",0],[0.379362,0.220984,"United States",1],[0.473208,0.522222,"Nigeria",1],[0.432331,0.216645,"Mexico",1],[0.455178,0.799903,"Vietnam",1],[0.411512,0.69791,"Pakistan",2],[0.317734,0.490898,"United Kingdom",1],[0.583651,0.569421,"South Africa",1],[0.60389,0.319535,"Argentina",1],[0.571073,0.874319,"Australia",1],[0.508286,0.566173,"Congo",2],[0.436276,0.718522,"India",2],[0.390705,0.886776,"Japan",2],[0.424377,0.581299,"Egypt",2],[0.382323,0.597014,"Turkey",2],[0.471483,0.607367,"Ethiopia",2],[0.353336,0.505245,"France",2],[0.488602,0.297476,"Colombia",2],[0.341349,0.586866,"Ukraine",2],[0.418928,0.508333,"Algeria",2],[0.373732,0.677647,"Uzbekistan",2],[0.519129,0.291539,"Peru",2],[0.478951,0.724205,"Sri Lanka",2],[0.347193,0.685495,"Kazakhstan",2],[0.434283,0.275464,"Cuba",2],[0.292197,0.540336,"Sweden",2],[0.566634,0.338418,"Paraguay",2],[0.46129,0.253016,"El Salvador",2],[0.352438,0.788472,"Mongolia",2],[0.440315,0.658344,"Oman",2],[0.459357,0.459853,"Senegal",3],[0.382196,0.561077,"Greece",3],[0.479461,0.917826,"Micronesia",2],[0.405096,0.320121,"Bermuda",2],[0.464286,0.84092,"Philippines",3],[0.334053,0.529022,"Germany",3],[0.403965,0.651568,"Iran",3],[0.368819,0.535206,"Italy",3],[0.518164,0.599411,"Tanzania",3],[0.459043,0.581922,"Sudan",3],[0.495994,0.606754,"Kenya",3],[0.417736,0.733333,"Nepal",3],[0.402483,0.622708,"Iraq",3],[0.487294,0.784071,"Malaysia",3],[0.453962,0.633032,"Yemen",3],[0.37722,0.85302,"North Korea",3],[0.431373,0.836061,"Taiwan",3],[0.553552,0.629005,"Madagascar",3],[0.355821,0.568572,"Romania",3],[0.487173,0.536538,"Cameroon",3],[0.477734,0.484533,"Ivory Coast",3],[0.449928,0.5259,"Niger",3],[0.540769,0.576553,"Zambia",3],[0.453896,0.493639,"Mali",3],[0.503722,0.279537,"Ecuador",3],[0.548096,0.319469,"Bolivia",3],[0.456082,0.552821,"Chad",3],[0.445816,0.299008,"Haiti",3],[0.32378,0.576936,"Belarus",3],[0.377148,0.632742,"Azerbaijan",3],[0.409959,0.596832,"Israel",3],[0.515808,0.900691,"Papua New Guinea",3],[0.422609,0.550344,"Libya",3],[0.271403,0.572003,"Finland",3],[0.476135,0.274637,"Panama",3],[0.566383,0.54812,"Namibia",3],[0.307171,0.56876,"Latvia",3],[0.5025,0.532472,"Gabon",3],[0.469971,0.330322,"Trinidad and Tobago",3],[0.424684,0.640374,"Bahrain",3],[0.396158,0.59207,"Cyprus",3],[0.486535,0.337106,"Guyana",3],[0.534161,0.623009,"Comoros",3],[0.487728,0.818237,"Brunei",3],[0.546554,0.966964,"Vanuatu",3],[0.538622,0.021889,"Sāmoa",3],[0.499042,0.9824,"Kiribati",3],[0.512952,0.654039,"Seychelles",3],[0.456665,0.329541,"Dominica",3],[0.475563,0.969753,"Marshall Islands",3],[0.27867,0.480466,"Faroe Islands",3],[0.429841,0.750815,"Bangladesh",4],[0.458145,0.780091,"Thailand",4],[0.390485,0.854711,"South Korea",4],[0.329338,0.553151,"Poland",4],[0.49574,0.589491,"Uganda",4],[0.408791,0.479622,"Morocco",4],[0.400245,0.683996,"Afghanistan",4],[0.4777,0.316359,"Venezuela",4],[0.426323,0.617647,"Saudi Arabia",4],[0.554661,0.596985,"Mozambique",4],[0.397315,0.608471,"Syria",4],[0.466206,0.495311,"Burkina Faso",4],[0.593126,0.301892,"Chile",4],[0.537191,0.594251,"Malawi",4],[0.464876,0.791151,"Cambodia",4],[0.533232,0.548803,"Angola",4],[0.505458,0.583512,"Rwanda",4],[0.399991,0.526111,"Tunisia",4],[0.47004,0.470255,"Guinea",4],[0.476673,0.636343,"Somalia",4],[0.473407,0.506273,"Benin",4],[0.349293,0.539235,"Austria",4],[0.47807,0.582408,"South Sudan",4],[0.368936,0.570794,"Bulgaria",4],[0.383505,0.69671,"Tajikistan",4],[0.44323,0.787162,"Laos",4],[0.373046,0.707567,"Kyrgyzstan",4],[0.313024,0.528704,"Denmark",4],[0.28388,0.52441,"Norway",4],[0.455111,0.605555,"Eritrea",4],[0.38083,0.664979,"Turkmenistan",4],[0.49623,0.788387,"Singapore",4],[0.326373,0.477835,"Ireland",4],[0.431293,0.649999,"United Arab Emirates",4],[0.626922,0.980096,"New Zealand",4],[0.358283,0.543493,"Croatia",4],[0.314595,0.565972,"Lithuania",4],[0.414897,0.631939,"Kuwait",4],[0.596788,0.344388,"Uruguay",4],[0.442529,0.474334,"Mauritania",4],[0.448616,0.285015,"Jamaica",4],[0.566185,0.568314,"Botswana",4],[0.576579,0.58722,"Eswatini",4],[0.297204,0.570366,"Estonia",4],[0.557536,0.659918,"Mauritius",4],[0.524385,0.850176,"East Timor",4],[0.495518,0.529214,"Equatorial Guinea",4],[0.420342,0.751422,"Bhutan",4],[0.527174,0.952302,"Solomon Islands",4],[0.454966,0.43331,"Cape Verde",4],[0.393068,0.540132,"Malta",4],[0.489658,0.703401,"Maldives",4],[0.451719,0.25365,"Belize",4],[0.463147,0.334653,"Barbados",4],[0.366879,0.614528,"Abkhazia",4],[0.556471,0.013326,"Tonga",4],[0.342482,0.494067,"Jersey",4],[0.369187,0.50437,"Andorra",4],[0.475908,0.467111,"Sierra Leone",5],[0.374926,0.555555,"Albania",5],[0.363027,0.557087,"Serbia",5],[0.428934,0.283333,"The Bahamas",5],[0.352545,0.522867,"Switzerland",5],[0.466947,0.619015,"Djibouti",5],[0.364651,0.520632,"Monaco",5],[0.451561,0.766667,"Myanmar",5],[0.350985,0.554184,"Hungary",5],[0.484001,0.473984,"Liberia",5],[0.372407,0.622302,"Georgia",5],[0.480416,0.55555,"Central African Republic",5],[0.464689,0.263073,"Nicaragua",5],[0.551206,0.997256,"Fiji",5],[0.477621,0.497,"Ghana",5],[0.329213,0.515651,"Netherlands",5],[0.552175,0.58263,"Zimbabwe",5],[0.336359,0.512963,"Belgium",5],[0.340249,0.542606,"Czechia",5],[0.509524,0.583146,"Burundi",5],[0.379801,0.477402,"Portugal",5],[0.457109,0.260901,"Honduras",5],[0.344515,0.554036,"Slovakia",5],[0.399887,0.599565,"Lebanon",5],[0.471308,0.266461,"Costa Rica",5],[0.35055,0.579353,"Moldova",5],[0.502018,0.54345,"Congo",5],[0.369013,0.558061,"Kosovo",5],[0.466945,0.45768,"Guinea-Bissau",5],[0.339939,0.517027,"Luxembourg",5],[0.464995,0.305662,"Aruba",5],[0.45142,0.327901,"Antigua and Barbuda",5],[0.456163,0.24904,"Guatemala",5],[0.472848,0.627805,"Somaliland",5],[0.444633,0.276204,"Cayman Islands",5],[0.438162,0.301242,"Turks and Caicos Islands",5],[0.497302,0.519507,"São Tomé and Príncipe",6],[0.427217,0.642304,"Qatar",6],[0.445941,0.304714,"Dominican Republic",7],[0.372644,0.560325,"North Macedonia",6],[0.586157,0.578708,"Lesotho",6],[0.475515,0.502833,"Togo",6],[0.408811,0.602616,"Jordan",6],[0.362438,0.548878,"Bosnia and Herzegovina",6],[0.375772,0.624094,"Armenia",6],[0.355282,0.541154,"Slovenia",6],[0.462234,0.456972,"The Gambia",6],[0.488486,0.34423,"Suriname",6],[0.461219,0.330625,"Saint Lucia",6],[0.466034,0.328638,"Grenada",6],[0.320164,0.487336,"Isle of Man",6],[0.369914,0.622494,"South Ossetia",6],[0.367499,0.554217,"Montenegro",7],[0.463847,0.329787,"Saint Vincent and the Grenadines",7],[0.34148,0.492827,"Guernsey",7],[0.466086,0.308525,"Curacao",7],[0.395335,0.593403,"Northern Cyprus",8]],"cities":[],"paths":[],"lakes":[["M 506.17 286.48 506.35 285.57 506.86 285.51 506.97 286.52 506.99 285.69 508.29 285.83 508.3 284.98 508.77 284.66 508.99 284.95 508.95 284.23 509.59 284.4 509.33 283.52 510.16 283.98 509.83 283.53 510.52 283.89 510.4 283.42 510.73 283.97 510.52 283.39 510.95 282.76 512.62 281.65 514.29 281.43 514.51 281.93 516.2 282.21 516.79 281.55 517.26 282.48 517.86 282.21 518.06 283.32 517.39 284.21 517.75 284.84 516.92 286.17 514.2 286.82 513.32 287.98 513.93 289.07 514.55 289.28 513.57 289.43 512.93 288.92 511.81 288.89 511.66 289.7 512.98 290.29 513.96 292.12 513.93 293.5 514.79 293.4 515.34 294.47 517.22 294.82 517.12 295.25 516.78 294.77 517.07 295.32 516.5 296.71 516.79 298.35 517.66 299.97 517.25 302.83 517.67 303.27 517.61 302.85 519.18 302.8 520.31 303.46 519.12 303.03 518.75 303.69 519.41 304.17 518.29 304.18 518.44 303.73 517.99 304.51 518.18 305.12 518.15 304.66 519 304.7 519.23 305.41 519.37 305.08 519.37 305.52 520.04 305.85 519.59 308.84 520 311.6 514.8 312.49 512.67 311.66 511.55 310.32 509.93 310.09 508.9 309.34 508.47 306.09 508.94 305.14 508.59 305.19 508.91 304.94 509.34 305.4 509.46 304.75 509.86 304.95 509.5 304.32 509.96 302.34 510.83 301.77 511.93 302.21 511.93 301.82 511.26 301.12 510.1 301 509.02 298.81 505.49 293.95 506.11 291.16 505.47 291.45 504.96 290.21 503.87 289.34 504.24 289.37 504.08 288.95 504.6 288.84 504.56 288.41 504.84 288.67 505.85 285.72 506.17 286.48 Z M 520 311.6 520.05 311.93 518.63 311.88 520 311.6 Z",[0.6298374938964844,0.35178749084472655,0.6503874969482422,0.39061248779296875]],["M 636.84 261.34 636.76 260.82 637.96 259.94 638.44 259.19 639.11 258.67 640.09 257.39 640.84 255.88 642.34 252.93 642.65 250.95 643.35 250.18 644.29 250.25 643.78 253.12 643.69 254.12 643.29 255.57 642.93 257.54 642.71 258.3 642.22 257.69 641.33 258.97 641.78 259.19 641.69 259.86 641.02 260.08 640.4 261.34 639.56 262.14 638.49 262.73 636.98 263.09 635.78 264.11 634.98 265.12 633.87 265.98 632.93 266.19 631.78 266.05 630.58 265.69 630.27 265.19 630.8 264.76 632 264.76 633.47 264.25 634.4 263.24 635.51 262.36 636.13 262 636.84 261.34 Z",[0.7878375244140625,0.31272499084472655,0.8053624725341797,0.3327375030517578]],["M 180.1 257.13 182.32 255.59 182.66 256.64 183.01 259.02 185.79 266.41 186.14 268.91 185.05 269.76 184.62 268.69 183.92 266.05 181.78 263.58 179.47 259.8 180.1 257.13 Z",[0.22433750152587892,0.31948749542236327,0.23267499923706056,0.3372000122070313]],["M 144.44 223.28 142.65 220.56 142.09 219.41 142.57 219.55 145.66 221.11 148.1 222.94 151.6 221.03 153.24 218.73 155.11 217.94 156.89 218.93 157.58 219.24 157.52 219.83 155.33 220.69 152.72 221.49 149.71 225.22 147.47 227.44 143.69 228.37 141.24 228.45 137.64 226.37 137.01 226.14 136.92 225.4 137.38 225.23 140.44 226.3 142.94 224.6 144.44 223.28 Z",[0.17114999771118164,0.2724250030517578,0.19697500228881837,0.2855624961853027]],["M 224.32 293.19 223.64 293.34 222.75 293.05 223.42 292.01 224.1 291.64 225.67 291.19 227.54 290.77 228.53 291.36 229.15 290.68 229.85 290.25 230.33 290.48 230.58 290.96 230.71 292.16 229.04 293.17 227.22 292.91 225.48 292.8 224.32 293.19 Z",[0.2784375,0.3628125,0.28838750839233396,0.36667499542236326]],["M 215.29 296.73 216.51 296.92 218.16 295.97 219.13 295.13 219.79 294.99 221.01 295.29 221.6 294.82 222.69 294.44 224.62 294.07 224.67 294.36 222.75 296.17 221.07 297.03 219.93 297.44 218.61 298.26 217.01 298.65 215.9 298.5 214.53 297.89 215.29 296.73 Z",[0.2681624984741211,0.36758750915527344,0.28083749771118166,0.3733124923706055]],["M 200.89 278.06 201.79 276.74 203.05 276.21 203.55 275.39 204.05 274.95 206.11 275.63 207.64 275.71 208.18 276.16 208.92 278.06 211.41 278.56 211.02 279.49 211.9 280.46 211.52 281.7 212.45 282.11 211.99 283.2 211.31 283.07 210.84 282.16 208.66 282.44 206.69 283.16 205.12 281.93 203.86 281.52 204.58 279.79 202.62 280.88 200.83 281.93 199.12 282.76 197.76 281.64 195.53 282.32 195.54 281.84 197.04 280.47 198.62 279.15 200.89 278.06 Z",[0.24441249847412108,0.34368751525878904,0.26556249618530275,0.35400001525878905]],["M 475.22 399.72 475.86 400.71 475.72 402.36 474.62 403.35 473.89 404.35 474.77 405.11 473.5 405.66 473.23 405.4 471.94 405.53 470.95 406.03 470.33 405.18 470.75 403.62 470.81 402.28 470.7 401.42 471.72 400.12 473.12 399.81 474.07 399.28 475.22 399.72 Z",[0.5879124832153321,0.4990999984741211,0.5948249816894531,0.5075374984741211]],["M 466.3 226.77 468.56 224.21 472.28 227.27 473.21 229.44 472.92 230.16 472.44 229.93 472.41 231.39 470.44 231.27 470.02 232.67 469.13 232.64 469.13 231.67 467.85 229.49 467.78 228.52 466.3 226.77 Z",[0.5828749847412109,0.28026250839233396,0.5915124893188477,0.2908374977111816]],["M 575.54 282.2 576.1 282.53 575.31 283.42 574.32 283.66 571.57 283.34 568.03 282.98 567.7 282.45 567.57 283.1 566.47 283.31 566.16 284.26 565.06 284.6 564.67 287.81 563.19 285.85 563.2 285.23 563.86 284.57 563.73 284.02 564.49 283.95 564.65 283.24 566.53 281.98 569.34 282.1 571.51 282.54 573.02 282.52 573.99 283.1 574.22 282.49 575.54 282.2 Z",[0.7039875030517578,0.3524750137329102,0.7201249694824219,0.3597624969482422]],["M 468.46 419.13 467.7 418.95 467.93 418.09 467.28 417.5 466.99 416.26 465.64 415.04 464.87 413.44 465.27 412.5 464.67 411.25 465.07 407.68 465.89 409.83 465.78 410.89 466.2 411.22 466.13 412.17 466.56 413.05 466.05 413.9 467.84 415.42 468.01 416.81 469.31 419.48 468.94 419.6 468.46 419.13 Z",[0.580837516784668,0.5095999908447265,0.5866374969482422,0.5245000076293945]],["M 478.36 432.06 478.3 432.35 477.51 431.45 477.13 432.03 476.77 431.53 476.78 430.67 476.27 430.01 476.29 429.01 475.63 427.34 476.27 426.08 476.13 423.35 475.35 421.89 475.55 421.2 476.72 422.4 476.91 424.78 477.64 425.65 477.1 427.82 477.48 430.74 477.9 430.84 478.36 432.06 Z",[0.5941875076293945,0.5265000152587891,0.5979499816894531,0.5404375076293946]],["M 431.07 235.81 431.08 236.33 430.93 237.12 429.52 238.38 428.51 238.8 427.69 238.81 427.86 237.66 427.83 237.21 428.22 236.9 428.95 236.73 429.32 236.14 430.2 235.24 431.07 235.81 Z",[0.5346125030517578,0.2940500068664551,0.5388499832153321,0.29851249694824217]],["M 220.65 338.17 220.15 338.09 220.18 337.48 220.68 337.56 220.65 338.17 Z",[0.27518749237060547,0.42185001373291015,0.27584999084472656,0.422712516784668]],["M 211.43 375.07 210.47 375.01 209.35 374.25 209.14 373.36 209.85 373.27 211.03 374.22 211.43 375.07 Z",[0.26142499923706053,0.46658748626708985,0.2642874908447266,0.46883750915527345]],["M 482.54 373.48 482.26 373.06 482.76 372.6 483.37 372.77 483.29 373.53 482.97 373.79 482.54 373.48 Z",[0.6028250122070312,0.46575000762939456,0.6042124938964843,0.4672375106811523]],["M 245.76 436.32 245.05 435.86 244.48 435.42 244.72 435.26 244.74 434.98 244.7 434.54 245.34 434.67 246.7 435.76 246.76 435.83 247.23 436.85 246.88 437.2 246.66 437.27 246.46 437.1 246.26 436.96 246.11 436.55 245.76 436.32 Z",[0.30559999465942383,0.5431750106811524,0.3090374946594238,0.5465874862670899]],["M 179.1 260.14 178.78 260.16 178.21 260.07 176.82 259.55 176.43 258.63 177.03 257.83 176.83 257.21 176.88 257.07 177.05 256.51 177.25 255.99 177.79 256.05 177.67 256.49 177.37 257.13 178.06 257.14 177.98 257.54 177.65 258.96 178.52 259.51 179.13 259.61 179.1 260.14 Z",[0.22053749084472657,0.31998750686645505,0.22391250610351562,0.3252000045776367]],["M 479.37 221.82 480.12 224.49 480.87 226.54 480.24 227.74 478.56 228.04 477.48 227.27 478.24 227.28 479.06 227.41 478.13 225.99 477.46 225.25 476.64 223.78 476.14 222.11 476.2 221.73 477.03 222.06 476.95 220.99 477.41 221.74 477.96 222.48 478.26 222.23 478.81 221.93 478.09 220.82 476.92 219.49 477.77 219.56 478.3 219.92 479.37 221.82 Z",[0.5951750183105469,0.2743625068664551,0.6010874938964844,0.28504999160766603]],["M 150.7 298.93 150.8 299.52 150.73 300.38 149.6 299.56 149.54 299.45 149.16 298.08 149.8 298.64 150.21 298.94 150.62 298.67 150.7 298.93 Z",[0.18645000457763672,0.37259998321533205,0.18850000381469725,0.37547500610351564]],["M 138.31 201.61 137.84 203.62 137.54 204.1 133.96 204.27 133.9 204.71 134.08 205.39 134 206.24 130.32 208.82 130.36 208.22 131.23 206.19 130.98 205.83 127.63 208.03 126.15 207.24 126.27 206.5 128.16 203.96 128.1 203.37 122.33 202.56 122.45 202 134.47 197.43 134.76 197.97 132.94 200.27 138.65 199.74 138.64 200.52 138.31 201.61 Z",[0.15291250228881836,0.24678749084472656,0.17331249237060548,0.26102500915527344]],["M 156.33 236.54 153.14 238.58 152.89 238.05 152.98 237.73 157.56 234.3 163.23 235.31 163.23 235.43 156.33 236.54 Z",[0.19111249923706056,0.2928750038146973,0.20403749465942383,0.2982250022888184]],["M 173.57 240.89 174.35 241.5 173.4 243.66 173.48 244.14 170.66 247.74 170.48 247.48 170.78 246.29 170.94 246.26 171.08 246.85 172.05 245.34 171.53 243.91 171.53 243.18 173.05 240.87 173.57 240.89 Z",[0.21309999465942384,0.30108749389648437,0.21793750762939454,0.3096750068664551]],["M 211.27 285.28 211.66 284.85 211.73 284.87 213.69 284.58 212.59 283.3 213 282.82 213.44 283.54 215.11 283.94 216.8 283.97 218.6 284.3 220.58 284.92 221.31 285.92 222.75 288.33 222.03 289.36 220.23 288.93 219.11 286.99 219.39 288.97 218.33 290.7 218.44 292.16 218.26 293.01 216.82 294.02 216.71 292.77 216.31 290.99 215.49 290.68 214.11 292.04 213.67 292.01 213.56 291.24 214.78 290 214.98 288.58 214.8 287.15 213.16 285.92 211.27 285.28 Z",[0.2640875053405762,0.35352500915527346,0.2784375,0.36752498626708985]],["M 211.66 284.85 211.27 285.28 210.96 286.49 210.47 286.81 210.07 288.36 209.87 287.31 208.98 288.06 208.42 289.11 207.84 290.64 207.73 291.94 208.47 293.83 208.41 295.83 207.51 297.29 207.06 297.7 206.46 298.03 205.7 298.05 205.5 297.84 204.9 296.27 204.88 295.49 204.94 294.75 204.66 293.26 205.08 291.52 205.59 289.37 206.74 286.95 206.4 286.96 204.77 288.99 204.47 288.62 205.34 287.49 206.67 285.44 208.18 285.15 209.91 284.51 211.66 284.85 Z",[0.2555875015258789,0.35563751220703127,0.2645750045776367,0.37256248474121095]]]}
4 |
5 | function drawPlaces(tile, coords, places, opts) {
6 | var ctx = tile.getContext('2d', {alpha: false});
7 |
8 | if (!places.path2ds)
9 | places.path2ds = places.paths.map(p => [new Path2D(p[0]), p[1]])
10 |
11 | if (!places.lakepath2ds)
12 | places.lakepath2ds = places.lakes.map(p => [new Path2D(p[0]), p[1]])
13 |
14 | let vwidth = 800, vheight = 800
15 |
16 | var size = {x: tile.width, y: tile.height};
17 | let margin1 = 2/size.x, margin2 = 35/size.x, margin3 = 50/size.x, N = Math.pow(2, coords.z);
18 |
19 | let lbound = coords.x / N, rbound = lbound + 1/N, tbound = coords.y / N, bbound = tbound + 1/N
20 |
21 | ctx.fillStyle = opts.backgroundColor || (places.path2ds.length ? "#aad3df" : 'white')
22 | ctx.fillRect(0, 0, size.x, size.y)
23 |
24 | ctx.translate(-size.x*coords.x, -size.x*coords.y)
25 | ctx.scale(size.x*N/vwidth,size.y*N/vheight)
26 | ctx.strokeStyle = opts.borderColor || '#b4a6ae'
27 | ctx.fillStyle = opts.borderFillColor || '#fdf9f1'
28 | ctx.lineWidth = (opts.borderWidth||4)/N
29 | ctx.lineJoin = 'round'
30 |
31 | let pathsToDraw = new Path2D()
32 |
33 | for (let [p, bounds] of places.path2ds) { // 60-100 fails
34 | if (!(bounds[0] > rbound || bounds[2] < lbound || bounds[1] > bbound || bounds[3] < tbound)) {
35 | pathsToDraw.addPath(p)
36 | }
37 | }
38 |
39 | if (opts.borderFillColor != 'transparent')
40 | ctx.fill(pathsToDraw)
41 | if (opts.borderStrokeColor != 'transparent')
42 | ctx.stroke(pathsToDraw)
43 |
44 | ctx.fillStyle = opts.backgroundColor || '#aad3df'
45 |
46 | let lakePathsToDraw = new Path2D()
47 |
48 | for (let [p, bounds] of places.lakepath2ds) { // 60-100 fails
49 | if (!(bounds[0] > rbound || bounds[2] < lbound || bounds[1] > bbound || bounds[3] < tbound)) {
50 | lakePathsToDraw.addPath(p)
51 | }
52 | }
53 |
54 | if (opts.backgroundColor != 'transparent')
55 | ctx.fill(lakePathsToDraw)
56 | if (opts.borderStrokeColor != 'transparent')
57 | ctx.stroke(lakePathsToDraw)
58 |
59 | ctx.resetTransform()
60 |
61 | let dotColor = opts.dotColor || (places.path2ds.length ? 'transparent' : 'red')
62 | ctx.fillStyle = dotColor
63 |
64 | if (dotColor != 'transparent')
65 | for (let [yc, xc, name, zoom] of places.cities) {
66 | let y = yc * N - coords.y, x = xc * N - coords.x
67 | if (zoom > coords.z && y > -margin1 && y < 1+margin1 && x > -margin1 && x < 1+margin1) {
68 | let xS = size.x * x, yS = size.y * y
69 | ctx.fillRect(xS-1,yS-1,2,2)
70 | }
71 | }
72 |
73 | ctx.strokeStyle = opts.textStrokeColor || 'rgba(255,255,255,.8)'
74 | ctx.lineWidth = opts.textStrokeWidth || 3
75 | ctx.textAlign = 'center'
76 | ctx.fillStyle = opts.textFillColor || "black";
77 | ctx.font = opts.cityFont || '12px Arial, Helvetica, Ubuntu, sans-serif'
78 |
79 | for (let [yc, xc, name, zoom] of places.cities) {
80 | if (zoom > coords.z) continue
81 |
82 | let y = yc * N - coords.y, x = xc * N - coords.x
83 | if (y > -margin2 && y < 1+margin2 && x > -margin2 && x < 1+margin2) {
84 |
85 | let xS = size.x * x, yS = size.y * y
86 | ctx.strokeText(name, xS, yS, 70)
87 | ctx.fillText(name, xS, yS, 70)
88 | }
89 | }
90 |
91 | ctx.font = opts.countryFont || 'bold 14px Arial, Helvetica, Ubuntu, sans-serif'
92 |
93 | for (let [yc, xc, name, zoom] of places.countries) {
94 | if (zoom > coords.z || coords.z > 8) continue
95 |
96 | let y = yc * N - coords.y, x = xc * N - coords.x
97 | if (y > -margin3 && y < 1+margin3 && x > -margin3 && x < 1+margin3) {
98 | let xS = size.x * x, yS = size.y * y
99 | ctx.strokeText(name, xS, yS, 100)
100 | ctx.fillText(name, xS, yS, 100)
101 | }
102 | }
103 | return tile;
104 | }
105 |
106 |
107 | L.GridLayer.TinyWorld = L.GridLayer.extend({
108 | createTile: function(xyz){
109 | // create a element for drawing
110 | let tile = L.DomUtil.create('canvas', 'leaflet-tile');
111 |
112 | var tileSize = this.getTileSize();
113 | tile.setAttribute('width', tileSize.x);
114 | tile.setAttribute('height', tileSize.y);
115 |
116 | return drawPlaces(tile, xyz, places, this.options)
117 | },
118 | getAttribution: function() {
119 | return '© tinyworldmap , OpenStreetMap '
120 | }
121 | });
122 | })()
123 |
--------------------------------------------------------------------------------
/dist/v2/tiny-world-countries.json:
--------------------------------------------------------------------------------
1 | {"countries":[[0.380987,0.490324,"Spain",0],[0.396098,0.791666,"China",0],[0.5069,0.827473,"Indonesia",0],[0.528861,0.352222,"Brazil",0],[0.26229,0.771515,"Russia",0],[0.284376,0.200023,"Canada",0],[0.260344,0.449706,"Iceland",0],[0.146465,0.381076,"Greenland",0],[0.379362,0.220984,"United States",1],[0.473208,0.522222,"Nigeria",1],[0.432331,0.216645,"Mexico",1],[0.455178,0.799903,"Vietnam",1],[0.411512,0.69791,"Pakistan",2],[0.317734,0.490898,"United Kingdom",1],[0.583651,0.569421,"South Africa",1],[0.60389,0.319535,"Argentina",1],[0.571073,0.874319,"Australia",1],[0.508286,0.566173,"Congo",2],[0.436276,0.718522,"India",2],[0.390705,0.886776,"Japan",2],[0.424377,0.581299,"Egypt",2],[0.382323,0.597014,"Turkey",2],[0.471483,0.607367,"Ethiopia",2],[0.353336,0.505245,"France",2],[0.488602,0.297476,"Colombia",2],[0.341349,0.586866,"Ukraine",2],[0.418928,0.508333,"Algeria",2],[0.373732,0.677647,"Uzbekistan",2],[0.519129,0.291539,"Peru",2],[0.478951,0.724205,"Sri Lanka",2],[0.347193,0.685495,"Kazakhstan",2],[0.434283,0.275464,"Cuba",2],[0.292197,0.540336,"Sweden",2],[0.566634,0.338418,"Paraguay",2],[0.46129,0.253016,"El Salvador",2],[0.352438,0.788472,"Mongolia",2],[0.440315,0.658344,"Oman",2],[0.459357,0.459853,"Senegal",3],[0.382196,0.561077,"Greece",3],[0.479461,0.917826,"Micronesia",2],[0.405096,0.320121,"Bermuda",2],[0.464286,0.84092,"Philippines",3],[0.334053,0.529022,"Germany",3],[0.403965,0.651568,"Iran",3],[0.368819,0.535206,"Italy",3],[0.518164,0.599411,"Tanzania",3],[0.459043,0.581922,"Sudan",3],[0.495994,0.606754,"Kenya",3],[0.417736,0.733333,"Nepal",3],[0.402483,0.622708,"Iraq",3],[0.487294,0.784071,"Malaysia",3],[0.453962,0.633032,"Yemen",3],[0.37722,0.85302,"North Korea",3],[0.431373,0.836061,"Taiwan",3],[0.553552,0.629005,"Madagascar",3],[0.355821,0.568572,"Romania",3],[0.487173,0.536538,"Cameroon",3],[0.477734,0.484533,"Ivory Coast",3],[0.449928,0.5259,"Niger",3],[0.540769,0.576553,"Zambia",3],[0.453896,0.493639,"Mali",3],[0.503722,0.279537,"Ecuador",3],[0.548096,0.319469,"Bolivia",3],[0.456082,0.552821,"Chad",3],[0.445816,0.299008,"Haiti",3],[0.32378,0.576936,"Belarus",3],[0.377148,0.632742,"Azerbaijan",3],[0.409959,0.596832,"Israel",3],[0.515808,0.900691,"Papua New Guinea",3],[0.422609,0.550344,"Libya",3],[0.271403,0.572003,"Finland",3],[0.476135,0.274637,"Panama",3],[0.566383,0.54812,"Namibia",3],[0.307171,0.56876,"Latvia",3],[0.5025,0.532472,"Gabon",3],[0.469971,0.330322,"Trinidad and Tobago",3],[0.424684,0.640374,"Bahrain",3],[0.396158,0.59207,"Cyprus",3],[0.486535,0.337106,"Guyana",3],[0.534161,0.623009,"Comoros",3],[0.487728,0.818237,"Brunei",3],[0.546554,0.966964,"Vanuatu",3],[0.538622,0.021889,"Sāmoa",3],[0.499042,0.9824,"Kiribati",3],[0.512952,0.654039,"Seychelles",3],[0.456665,0.329541,"Dominica",3],[0.475563,0.969753,"Marshall Islands",3],[0.27867,0.480466,"Faroe Islands",3],[0.429841,0.750815,"Bangladesh",4],[0.458145,0.780091,"Thailand",4],[0.390485,0.854711,"South Korea",4],[0.329338,0.553151,"Poland",4],[0.49574,0.589491,"Uganda",4],[0.408791,0.479622,"Morocco",4],[0.400245,0.683996,"Afghanistan",4],[0.4777,0.316359,"Venezuela",4],[0.426323,0.617647,"Saudi Arabia",4],[0.554661,0.596985,"Mozambique",4],[0.397315,0.608471,"Syria",4],[0.466206,0.495311,"Burkina Faso",4],[0.593126,0.301892,"Chile",4],[0.537191,0.594251,"Malawi",4],[0.464876,0.791151,"Cambodia",4],[0.533232,0.548803,"Angola",4],[0.505458,0.583512,"Rwanda",4],[0.399991,0.526111,"Tunisia",4],[0.47004,0.470255,"Guinea",4],[0.476673,0.636343,"Somalia",4],[0.473407,0.506273,"Benin",4],[0.349293,0.539235,"Austria",4],[0.47807,0.582408,"South Sudan",4],[0.368936,0.570794,"Bulgaria",4],[0.383505,0.69671,"Tajikistan",4],[0.44323,0.787162,"Laos",4],[0.373046,0.707567,"Kyrgyzstan",4],[0.313024,0.528704,"Denmark",4],[0.28388,0.52441,"Norway",4],[0.455111,0.605555,"Eritrea",4],[0.38083,0.664979,"Turkmenistan",4],[0.49623,0.788387,"Singapore",4],[0.326373,0.477835,"Ireland",4],[0.431293,0.649999,"United Arab Emirates",4],[0.626922,0.980096,"New Zealand",4],[0.358283,0.543493,"Croatia",4],[0.314595,0.565972,"Lithuania",4],[0.414897,0.631939,"Kuwait",4],[0.596788,0.344388,"Uruguay",4],[0.442529,0.474334,"Mauritania",4],[0.448616,0.285015,"Jamaica",4],[0.566185,0.568314,"Botswana",4],[0.576579,0.58722,"Eswatini",4],[0.297204,0.570366,"Estonia",4],[0.557536,0.659918,"Mauritius",4],[0.524385,0.850176,"East Timor",4],[0.495518,0.529214,"Equatorial Guinea",4],[0.420342,0.751422,"Bhutan",4],[0.527174,0.952302,"Solomon Islands",4],[0.454966,0.43331,"Cape Verde",4],[0.393068,0.540132,"Malta",4],[0.489658,0.703401,"Maldives",4],[0.451719,0.25365,"Belize",4],[0.463147,0.334653,"Barbados",4],[0.366879,0.614528,"Abkhazia",4],[0.556471,0.013326,"Tonga",4],[0.342482,0.494067,"Jersey",4],[0.369187,0.50437,"Andorra",4],[0.475908,0.467111,"Sierra Leone",5],[0.374926,0.555555,"Albania",5],[0.363027,0.557087,"Serbia",5],[0.428934,0.283333,"The Bahamas",5],[0.352545,0.522867,"Switzerland",5],[0.466947,0.619015,"Djibouti",5],[0.364651,0.520632,"Monaco",5],[0.451561,0.766667,"Myanmar",5],[0.350985,0.554184,"Hungary",5],[0.484001,0.473984,"Liberia",5],[0.372407,0.622302,"Georgia",5],[0.480416,0.55555,"Central African Republic",5],[0.464689,0.263073,"Nicaragua",5],[0.551206,0.997256,"Fiji",5],[0.477621,0.497,"Ghana",5],[0.329213,0.515651,"Netherlands",5],[0.552175,0.58263,"Zimbabwe",5],[0.336359,0.512963,"Belgium",5],[0.340249,0.542606,"Czechia",5],[0.509524,0.583146,"Burundi",5],[0.379801,0.477402,"Portugal",5],[0.457109,0.260901,"Honduras",5],[0.344515,0.554036,"Slovakia",5],[0.399887,0.599565,"Lebanon",5],[0.471308,0.266461,"Costa Rica",5],[0.35055,0.579353,"Moldova",5],[0.502018,0.54345,"Congo",5],[0.369013,0.558061,"Kosovo",5],[0.466945,0.45768,"Guinea-Bissau",5],[0.339939,0.517027,"Luxembourg",5],[0.464995,0.305662,"Aruba",5],[0.45142,0.327901,"Antigua and Barbuda",5],[0.456163,0.24904,"Guatemala",5],[0.472848,0.627805,"Somaliland",5],[0.444633,0.276204,"Cayman Islands",5],[0.438162,0.301242,"Turks and Caicos Islands",5],[0.497302,0.519507,"São Tomé and Príncipe",6],[0.427217,0.642304,"Qatar",6],[0.445941,0.304714,"Dominican Republic",7],[0.372644,0.560325,"North Macedonia",6],[0.586157,0.578708,"Lesotho",6],[0.475515,0.502833,"Togo",6],[0.408811,0.602616,"Jordan",6],[0.362438,0.548878,"Bosnia and Herzegovina",6],[0.375772,0.624094,"Armenia",6],[0.355282,0.541154,"Slovenia",6],[0.462234,0.456972,"The Gambia",6],[0.488486,0.34423,"Suriname",6],[0.461219,0.330625,"Saint Lucia",6],[0.466034,0.328638,"Grenada",6],[0.320164,0.487336,"Isle of Man",6],[0.369914,0.622494,"South Ossetia",6],[0.367499,0.554217,"Montenegro",7],[0.463847,0.329787,"Saint Vincent and the Grenadines",7],[0.34148,0.492827,"Guernsey",7],[0.466086,0.308525,"Curacao",7],[0.395335,0.593403,"Northern Cyprus",8]],"cities":[],"paths":[],"lakes":[["M 506.17 286.48 506.35 285.57 506.86 285.51 506.97 286.52 506.99 285.69 508.29 285.83 508.3 284.98 508.77 284.66 508.99 284.95 508.95 284.23 509.59 284.4 509.33 283.52 510.16 283.98 509.83 283.53 510.52 283.89 510.4 283.42 510.73 283.97 510.52 283.39 510.95 282.76 512.62 281.65 514.29 281.43 514.51 281.93 516.2 282.21 516.79 281.55 517.26 282.48 517.86 282.21 518.06 283.32 517.39 284.21 517.75 284.84 516.92 286.17 514.2 286.82 513.32 287.98 513.93 289.07 514.55 289.28 513.57 289.43 512.93 288.92 511.81 288.89 511.66 289.7 512.98 290.29 513.96 292.12 513.93 293.5 514.79 293.4 515.34 294.47 517.22 294.82 517.12 295.25 516.78 294.77 517.07 295.32 516.5 296.71 516.79 298.35 517.66 299.97 517.25 302.83 517.67 303.27 517.61 302.85 519.18 302.8 520.31 303.46 519.12 303.03 518.75 303.69 519.41 304.17 518.29 304.18 518.44 303.73 517.99 304.51 518.18 305.12 518.15 304.66 519 304.7 519.23 305.41 519.37 305.08 519.37 305.52 520.04 305.85 519.59 308.84 520 311.6 514.8 312.49 512.67 311.66 511.55 310.32 509.93 310.09 508.9 309.34 508.47 306.09 508.94 305.14 508.59 305.19 508.91 304.94 509.34 305.4 509.46 304.75 509.86 304.95 509.5 304.32 509.96 302.34 510.83 301.77 511.93 302.21 511.93 301.82 511.26 301.12 510.1 301 509.02 298.81 505.49 293.95 506.11 291.16 505.47 291.45 504.96 290.21 503.87 289.34 504.24 289.37 504.08 288.95 504.6 288.84 504.56 288.41 504.84 288.67 505.85 285.72 506.17 286.48 Z M 520 311.6 520.05 311.93 518.63 311.88 520 311.6 Z",[0.6298374938964844,0.35178749084472655,0.6503874969482422,0.39061248779296875]],["M 636.84 261.34 636.76 260.82 637.96 259.94 638.44 259.19 639.11 258.67 640.09 257.39 640.84 255.88 642.34 252.93 642.65 250.95 643.35 250.18 644.29 250.25 643.78 253.12 643.69 254.12 643.29 255.57 642.93 257.54 642.71 258.3 642.22 257.69 641.33 258.97 641.78 259.19 641.69 259.86 641.02 260.08 640.4 261.34 639.56 262.14 638.49 262.73 636.98 263.09 635.78 264.11 634.98 265.12 633.87 265.98 632.93 266.19 631.78 266.05 630.58 265.69 630.27 265.19 630.8 264.76 632 264.76 633.47 264.25 634.4 263.24 635.51 262.36 636.13 262 636.84 261.34 Z",[0.7878375244140625,0.31272499084472655,0.8053624725341797,0.3327375030517578]],["M 180.1 257.13 182.32 255.59 182.66 256.64 183.01 259.02 185.79 266.41 186.14 268.91 185.05 269.76 184.62 268.69 183.92 266.05 181.78 263.58 179.47 259.8 180.1 257.13 Z",[0.22433750152587892,0.31948749542236327,0.23267499923706056,0.3372000122070313]],["M 144.44 223.28 142.65 220.56 142.09 219.41 142.57 219.55 145.66 221.11 148.1 222.94 151.6 221.03 153.24 218.73 155.11 217.94 156.89 218.93 157.58 219.24 157.52 219.83 155.33 220.69 152.72 221.49 149.71 225.22 147.47 227.44 143.69 228.37 141.24 228.45 137.64 226.37 137.01 226.14 136.92 225.4 137.38 225.23 140.44 226.3 142.94 224.6 144.44 223.28 Z",[0.17114999771118164,0.2724250030517578,0.19697500228881837,0.2855624961853027]],["M 224.32 293.19 223.64 293.34 222.75 293.05 223.42 292.01 224.1 291.64 225.67 291.19 227.54 290.77 228.53 291.36 229.15 290.68 229.85 290.25 230.33 290.48 230.58 290.96 230.71 292.16 229.04 293.17 227.22 292.91 225.48 292.8 224.32 293.19 Z",[0.2784375,0.3628125,0.28838750839233396,0.36667499542236326]],["M 215.29 296.73 216.51 296.92 218.16 295.97 219.13 295.13 219.79 294.99 221.01 295.29 221.6 294.82 222.69 294.44 224.62 294.07 224.67 294.36 222.75 296.17 221.07 297.03 219.93 297.44 218.61 298.26 217.01 298.65 215.9 298.5 214.53 297.89 215.29 296.73 Z",[0.2681624984741211,0.36758750915527344,0.28083749771118166,0.3733124923706055]],["M 200.89 278.06 201.79 276.74 203.05 276.21 203.55 275.39 204.05 274.95 206.11 275.63 207.64 275.71 208.18 276.16 208.92 278.06 211.41 278.56 211.02 279.49 211.9 280.46 211.52 281.7 212.45 282.11 211.99 283.2 211.31 283.07 210.84 282.16 208.66 282.44 206.69 283.16 205.12 281.93 203.86 281.52 204.58 279.79 202.62 280.88 200.83 281.93 199.12 282.76 197.76 281.64 195.53 282.32 195.54 281.84 197.04 280.47 198.62 279.15 200.89 278.06 Z",[0.24441249847412108,0.34368751525878904,0.26556249618530275,0.35400001525878905]],["M 475.22 399.72 475.86 400.71 475.72 402.36 474.62 403.35 473.89 404.35 474.77 405.11 473.5 405.66 473.23 405.4 471.94 405.53 470.95 406.03 470.33 405.18 470.75 403.62 470.81 402.28 470.7 401.42 471.72 400.12 473.12 399.81 474.07 399.28 475.22 399.72 Z",[0.5879124832153321,0.4990999984741211,0.5948249816894531,0.5075374984741211]],["M 466.3 226.77 468.56 224.21 472.28 227.27 473.21 229.44 472.92 230.16 472.44 229.93 472.41 231.39 470.44 231.27 470.02 232.67 469.13 232.64 469.13 231.67 467.85 229.49 467.78 228.52 466.3 226.77 Z",[0.5828749847412109,0.28026250839233396,0.5915124893188477,0.2908374977111816]],["M 575.54 282.2 576.1 282.53 575.31 283.42 574.32 283.66 571.57 283.34 568.03 282.98 567.7 282.45 567.57 283.1 566.47 283.31 566.16 284.26 565.06 284.6 564.67 287.81 563.19 285.85 563.2 285.23 563.86 284.57 563.73 284.02 564.49 283.95 564.65 283.24 566.53 281.98 569.34 282.1 571.51 282.54 573.02 282.52 573.99 283.1 574.22 282.49 575.54 282.2 Z",[0.7039875030517578,0.3524750137329102,0.7201249694824219,0.3597624969482422]],["M 468.46 419.13 467.7 418.95 467.93 418.09 467.28 417.5 466.99 416.26 465.64 415.04 464.87 413.44 465.27 412.5 464.67 411.25 465.07 407.68 465.89 409.83 465.78 410.89 466.2 411.22 466.13 412.17 466.56 413.05 466.05 413.9 467.84 415.42 468.01 416.81 469.31 419.48 468.94 419.6 468.46 419.13 Z",[0.580837516784668,0.5095999908447265,0.5866374969482422,0.5245000076293945]],["M 478.36 432.06 478.3 432.35 477.51 431.45 477.13 432.03 476.77 431.53 476.78 430.67 476.27 430.01 476.29 429.01 475.63 427.34 476.27 426.08 476.13 423.35 475.35 421.89 475.55 421.2 476.72 422.4 476.91 424.78 477.64 425.65 477.1 427.82 477.48 430.74 477.9 430.84 478.36 432.06 Z",[0.5941875076293945,0.5265000152587891,0.5979499816894531,0.5404375076293946]],["M 431.07 235.81 431.08 236.33 430.93 237.12 429.52 238.38 428.51 238.8 427.69 238.81 427.86 237.66 427.83 237.21 428.22 236.9 428.95 236.73 429.32 236.14 430.2 235.24 431.07 235.81 Z",[0.5346125030517578,0.2940500068664551,0.5388499832153321,0.29851249694824217]],["M 220.65 338.17 220.15 338.09 220.18 337.48 220.68 337.56 220.65 338.17 Z",[0.27518749237060547,0.42185001373291015,0.27584999084472656,0.422712516784668]],["M 211.43 375.07 210.47 375.01 209.35 374.25 209.14 373.36 209.85 373.27 211.03 374.22 211.43 375.07 Z",[0.26142499923706053,0.46658748626708985,0.2642874908447266,0.46883750915527345]],["M 482.54 373.48 482.26 373.06 482.76 372.6 483.37 372.77 483.29 373.53 482.97 373.79 482.54 373.48 Z",[0.6028250122070312,0.46575000762939456,0.6042124938964843,0.4672375106811523]],["M 245.76 436.32 245.05 435.86 244.48 435.42 244.72 435.26 244.74 434.98 244.7 434.54 245.34 434.67 246.7 435.76 246.76 435.83 247.23 436.85 246.88 437.2 246.66 437.27 246.46 437.1 246.26 436.96 246.11 436.55 245.76 436.32 Z",[0.30559999465942383,0.5431750106811524,0.3090374946594238,0.5465874862670899]],["M 179.1 260.14 178.78 260.16 178.21 260.07 176.82 259.55 176.43 258.63 177.03 257.83 176.83 257.21 176.88 257.07 177.05 256.51 177.25 255.99 177.79 256.05 177.67 256.49 177.37 257.13 178.06 257.14 177.98 257.54 177.65 258.96 178.52 259.51 179.13 259.61 179.1 260.14 Z",[0.22053749084472657,0.31998750686645505,0.22391250610351562,0.3252000045776367]],["M 479.37 221.82 480.12 224.49 480.87 226.54 480.24 227.74 478.56 228.04 477.48 227.27 478.24 227.28 479.06 227.41 478.13 225.99 477.46 225.25 476.64 223.78 476.14 222.11 476.2 221.73 477.03 222.06 476.95 220.99 477.41 221.74 477.96 222.48 478.26 222.23 478.81 221.93 478.09 220.82 476.92 219.49 477.77 219.56 478.3 219.92 479.37 221.82 Z",[0.5951750183105469,0.2743625068664551,0.6010874938964844,0.28504999160766603]],["M 150.7 298.93 150.8 299.52 150.73 300.38 149.6 299.56 149.54 299.45 149.16 298.08 149.8 298.64 150.21 298.94 150.62 298.67 150.7 298.93 Z",[0.18645000457763672,0.37259998321533205,0.18850000381469725,0.37547500610351564]],["M 138.31 201.61 137.84 203.62 137.54 204.1 133.96 204.27 133.9 204.71 134.08 205.39 134 206.24 130.32 208.82 130.36 208.22 131.23 206.19 130.98 205.83 127.63 208.03 126.15 207.24 126.27 206.5 128.16 203.96 128.1 203.37 122.33 202.56 122.45 202 134.47 197.43 134.76 197.97 132.94 200.27 138.65 199.74 138.64 200.52 138.31 201.61 Z",[0.15291250228881836,0.24678749084472656,0.17331249237060548,0.26102500915527344]],["M 156.33 236.54 153.14 238.58 152.89 238.05 152.98 237.73 157.56 234.3 163.23 235.31 163.23 235.43 156.33 236.54 Z",[0.19111249923706056,0.2928750038146973,0.20403749465942383,0.2982250022888184]],["M 173.57 240.89 174.35 241.5 173.4 243.66 173.48 244.14 170.66 247.74 170.48 247.48 170.78 246.29 170.94 246.26 171.08 246.85 172.05 245.34 171.53 243.91 171.53 243.18 173.05 240.87 173.57 240.89 Z",[0.21309999465942384,0.30108749389648437,0.21793750762939454,0.3096750068664551]],["M 211.27 285.28 211.66 284.85 211.73 284.87 213.69 284.58 212.59 283.3 213 282.82 213.44 283.54 215.11 283.94 216.8 283.97 218.6 284.3 220.58 284.92 221.31 285.92 222.75 288.33 222.03 289.36 220.23 288.93 219.11 286.99 219.39 288.97 218.33 290.7 218.44 292.16 218.26 293.01 216.82 294.02 216.71 292.77 216.31 290.99 215.49 290.68 214.11 292.04 213.67 292.01 213.56 291.24 214.78 290 214.98 288.58 214.8 287.15 213.16 285.92 211.27 285.28 Z",[0.2640875053405762,0.35352500915527346,0.2784375,0.36752498626708985]],["M 211.66 284.85 211.27 285.28 210.96 286.49 210.47 286.81 210.07 288.36 209.87 287.31 208.98 288.06 208.42 289.11 207.84 290.64 207.73 291.94 208.47 293.83 208.41 295.83 207.51 297.29 207.06 297.7 206.46 298.03 205.7 298.05 205.5 297.84 204.9 296.27 204.88 295.49 204.94 294.75 204.66 293.26 205.08 291.52 205.59 289.37 206.74 286.95 206.4 286.96 204.77 288.99 204.47 288.62 205.34 287.49 206.67 285.44 208.18 285.15 209.91 284.51 211.66 284.85 Z",[0.2555875015258789,0.35563751220703127,0.2645750045776367,0.37256248474121095]]]}
--------------------------------------------------------------------------------
/dist/v3/styling-example.js:
--------------------------------------------------------------------------------
1 | let cb = places.find(p => p.id == 'country_borders')
2 |
3 | let defaultStyling = {
4 | background: {
5 | style: {
6 | fillStyle: (cb && cb.paths.length ? "#aad3df" : 'white')
7 | }
8 | },
9 | country_borders: {
10 | style: {
11 | fillStyle: '#fdf9f1',
12 | strokeStyle: '#b4a6ae',
13 | lineWidth: 1
14 | },
15 | },
16 | state_borders: {
17 | style: {
18 | fillStyle: 'transparent',
19 | strokeStyle: '#b4a6ae',
20 | lineWidth: 0.5
21 | },
22 | options: {lineDash: [2, 2], minZoom: 4}
23 | },
24 | lakes: {
25 | style: {
26 | fillStyle: '#aad3df',
27 | strokeStyle: '#b4a6ae',
28 | lineJoin: 'round'
29 | }
30 | },
31 | country_labels: {
32 | style: {
33 | fillStyle: 'black',
34 | strokeStyle: 'rgba(255,255,255,.8)',
35 | lineWidth: 3,
36 | font: 'bold 14px Arial, Helvetica, Ubuntu, sans-serif'
37 | },
38 | options: {maxWidth: 100, maxZoom: 8}
39 | },
40 | city_labels: {
41 | style: {
42 | fillStyle: 'black',
43 | strokeStyle: 'rgba(255,255,255,.8)',
44 | lineWidth: 3,
45 | font: '12px Arial, Helvetica, Ubuntu, sans-serif'
46 | },
47 | options: {maxWidth: 70, dotColor: (cb ? null : 'red')}
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/dist/v3/tiny-world-cities-2000.json:
--------------------------------------------------------------------------------
1 | [{"type":"fill","id":"background"},{"type":"label","id":"country_labels","labels":[[0.380987,0.490324,"Spain",0],[0.396098,0.791666,"China",0],[0.5069,0.827473,"Indonesia",0],[0.528861,0.352222,"Brazil",0],[0.26229,0.771515,"Russia",0],[0.284376,0.200023,"Canada",0],[0.260344,0.449706,"Iceland",0],[0.146465,0.381076,"Greenland",0],[0.379362,0.220984,"United States",1],[0.473208,0.522222,"Nigeria",1],[0.432331,0.216645,"Mexico",1],[0.455178,0.799903,"Vietnam",1],[0.411512,0.69791,"Pakistan",2],[0.317734,0.490898,"United Kingdom",1],[0.583651,0.569421,"South Africa",1],[0.60389,0.319535,"Argentina",1],[0.571073,0.874319,"Australia",1],[0.508286,0.566173,"Congo",2],[0.436276,0.718522,"India",2],[0.390705,0.886776,"Japan",2],[0.424377,0.581299,"Egypt",2],[0.382323,0.597014,"Turkey",2],[0.471483,0.607367,"Ethiopia",2],[0.353336,0.505245,"France",2],[0.488602,0.297476,"Colombia",2],[0.341349,0.586866,"Ukraine",2],[0.418928,0.508333,"Algeria",2],[0.373732,0.677647,"Uzbekistan",2],[0.519129,0.291539,"Peru",2],[0.478951,0.724205,"Sri Lanka",2],[0.347193,0.685495,"Kazakhstan",2],[0.434283,0.275464,"Cuba",2],[0.292197,0.540336,"Sweden",2],[0.566634,0.338418,"Paraguay",2],[0.46129,0.253016,"El Salvador",2],[0.352438,0.788472,"Mongolia",2],[0.440315,0.658344,"Oman",2],[0.459357,0.459853,"Senegal",3],[0.382196,0.561077,"Greece",3],[0.479461,0.917826,"Micronesia",2],[0.405096,0.320121,"Bermuda",2],[0.464286,0.84092,"Philippines",3],[0.334053,0.529022,"Germany",3],[0.403965,0.651568,"Iran",3],[0.368819,0.535206,"Italy",3],[0.518164,0.599411,"Tanzania",3],[0.459043,0.581922,"Sudan",3],[0.495994,0.606754,"Kenya",3],[0.417736,0.733333,"Nepal",3],[0.402483,0.622708,"Iraq",3],[0.487294,0.784071,"Malaysia",3],[0.453962,0.633032,"Yemen",3],[0.37722,0.85302,"North Korea",3],[0.431373,0.836061,"Taiwan",3],[0.553552,0.629005,"Madagascar",3],[0.355821,0.568572,"Romania",3],[0.487173,0.536538,"Cameroon",3],[0.477734,0.484533,"Ivory Coast",3],[0.449928,0.5259,"Niger",3],[0.540769,0.576553,"Zambia",3],[0.453896,0.493639,"Mali",3],[0.503722,0.279537,"Ecuador",3],[0.548096,0.319469,"Bolivia",3],[0.456082,0.552821,"Chad",3],[0.445816,0.299008,"Haiti",3],[0.32378,0.576936,"Belarus",3],[0.377148,0.632742,"Azerbaijan",3],[0.409959,0.596832,"Israel",3],[0.515808,0.900691,"Papua New Guinea",3],[0.422609,0.550344,"Libya",3],[0.271403,0.572003,"Finland",3],[0.476135,0.274637,"Panama",3],[0.566383,0.54812,"Namibia",3],[0.307171,0.56876,"Latvia",3],[0.5025,0.532472,"Gabon",3],[0.469971,0.330322,"Trinidad and Tobago",3],[0.424684,0.640374,"Bahrain",3],[0.396158,0.59207,"Cyprus",3],[0.486535,0.337106,"Guyana",3],[0.534161,0.623009,"Comoros",3],[0.487728,0.818237,"Brunei",3],[0.546554,0.966964,"Vanuatu",3],[0.538622,0.021889,"Sāmoa",3],[0.499042,0.9824,"Kiribati",3],[0.512952,0.654039,"Seychelles",3],[0.456665,0.329541,"Dominica",3],[0.475563,0.969753,"Marshall Islands",3],[0.27867,0.480466,"Faroe Islands",3],[0.429841,0.750815,"Bangladesh",4],[0.458145,0.780091,"Thailand",4],[0.390485,0.854711,"South Korea",4],[0.329338,0.553151,"Poland",4],[0.49574,0.589491,"Uganda",4],[0.408791,0.479622,"Morocco",4],[0.400245,0.683996,"Afghanistan",4],[0.4777,0.316359,"Venezuela",4],[0.426323,0.617647,"Saudi Arabia",4],[0.554661,0.596985,"Mozambique",4],[0.397315,0.608471,"Syria",4],[0.466206,0.495311,"Burkina Faso",4],[0.593126,0.301892,"Chile",4],[0.537191,0.594251,"Malawi",4],[0.464876,0.791151,"Cambodia",4],[0.533232,0.548803,"Angola",4],[0.505458,0.583512,"Rwanda",4],[0.399991,0.526111,"Tunisia",4],[0.47004,0.470255,"Guinea",4],[0.476673,0.636343,"Somalia",4],[0.473407,0.506273,"Benin",4],[0.349293,0.539235,"Austria",4],[0.47807,0.582408,"South Sudan",4],[0.368936,0.570794,"Bulgaria",4],[0.383505,0.69671,"Tajikistan",4],[0.44323,0.787162,"Laos",4],[0.373046,0.707567,"Kyrgyzstan",4],[0.313024,0.528704,"Denmark",4],[0.28388,0.52441,"Norway",4],[0.455111,0.605555,"Eritrea",4],[0.38083,0.664979,"Turkmenistan",4],[0.49623,0.788387,"Singapore",4],[0.326373,0.477835,"Ireland",4],[0.431293,0.649999,"United Arab Emirates",4],[0.626922,0.980096,"New Zealand",4],[0.358283,0.543493,"Croatia",4],[0.314595,0.565972,"Lithuania",4],[0.414897,0.631939,"Kuwait",4],[0.596788,0.344388,"Uruguay",4],[0.442529,0.474334,"Mauritania",4],[0.448616,0.285015,"Jamaica",4],[0.566185,0.568314,"Botswana",4],[0.576579,0.58722,"Eswatini",4],[0.297204,0.570366,"Estonia",4],[0.557536,0.659918,"Mauritius",4],[0.524385,0.850176,"East Timor",4],[0.495518,0.529214,"Equatorial Guinea",4],[0.420342,0.751422,"Bhutan",4],[0.527174,0.952302,"Solomon Islands",4],[0.454966,0.43331,"Cape Verde",4],[0.393068,0.540132,"Malta",4],[0.489658,0.703401,"Maldives",4],[0.451719,0.25365,"Belize",4],[0.463147,0.334653,"Barbados",4],[0.366879,0.614528,"Abkhazia",4],[0.556471,0.013326,"Tonga",4],[0.342482,0.494067,"Jersey",4],[0.369187,0.50437,"Andorra",4],[0.475908,0.467111,"Sierra Leone",5],[0.374926,0.555555,"Albania",5],[0.363027,0.557087,"Serbia",5],[0.428934,0.283333,"The Bahamas",5],[0.352545,0.522867,"Switzerland",5],[0.466947,0.619015,"Djibouti",5],[0.364651,0.520632,"Monaco",5],[0.451561,0.766667,"Myanmar",5],[0.477621,0.497,"Ghana",5],[0.329213,0.515651,"Netherlands",5],[0.552175,0.58263,"Zimbabwe",5],[0.336359,0.512963,"Belgium",5],[0.340249,0.542606,"Czechia",5],[0.509524,0.583146,"Burundi",5],[0.379801,0.477402,"Portugal",5],[0.350985,0.554184,"Hungary",5],[0.457109,0.260901,"Honduras",5],[0.464689,0.263073,"Nicaragua",5],[0.344515,0.554036,"Slovakia",5],[0.399887,0.599565,"Lebanon",5],[0.471308,0.266461,"Costa Rica",5],[0.480416,0.55555,"Central African Republic",5],[0.35055,0.579353,"Moldova",5],[0.502018,0.54345,"Congo",5],[0.372407,0.622302,"Georgia",5],[0.484001,0.473984,"Liberia",5],[0.369013,0.558061,"Kosovo",5],[0.466945,0.45768,"Guinea-Bissau",5],[0.551206,0.997256,"Fiji",5],[0.339939,0.517027,"Luxembourg",5],[0.464995,0.305662,"Aruba",5],[0.45142,0.327901,"Antigua and Barbuda",5],[0.456163,0.24904,"Guatemala",5],[0.472848,0.627805,"Somaliland",5],[0.444633,0.276204,"Cayman Islands",5],[0.438162,0.301242,"Turks and Caicos Islands",5],[0.497302,0.519507,"São Tomé and Príncipe",6],[0.475515,0.502833,"Togo",6],[0.408811,0.602616,"Jordan",6],[0.362438,0.548878,"Bosnia and Herzegovina",6],[0.375772,0.624094,"Armenia",6],[0.586157,0.578708,"Lesotho",6],[0.372644,0.560325,"North Macedonia",6],[0.355282,0.541154,"Slovenia",6],[0.462234,0.456972,"The Gambia",6],[0.427217,0.642304,"Qatar",6],[0.488486,0.34423,"Suriname",6],[0.461219,0.330625,"Saint Lucia",6],[0.466034,0.328638,"Grenada",6],[0.320164,0.487336,"Isle of Man",6],[0.369914,0.622494,"South Ossetia",6],[0.445941,0.304714,"Dominican Republic",7],[0.367499,0.554217,"Montenegro",7],[0.463847,0.329787,"Saint Vincent and the Grenadines",7],[0.34148,0.492827,"Guernsey",7],[0.466086,0.308525,"Curacao",7],[0.395335,0.593403,"Northern Cyprus",8]]},{"type":"label","id":"city_labels","labels":[[0.378921,0.823309,"Beijing",4],[0.312629,0.604493,"Moscow",4],[0.517187,0.796742,"Jakarta",4],[0.533756,0.28601,"Lima",4],[0.444955,0.22463,"Mexico City",4],[0.512016,0.542535,"Kinshasa",4],[0.332525,0.499645,"London",4],[0.393751,0.642749,"Tehran",4],[0.524618,0.536789,"Luanda",4],[0.327969,0.537191,"Berlin",4],[0.600294,0.551159,"Cape Town",4],[0.39001,0.508501,"Algiers",4],[0.503565,0.60227,"Nairobi",4],[0.544437,0.366994,"Brasília",4],[0.494346,0.62595,"Mogadishu",4],[0.484539,0.499441,"Accra",4],[0.344042,0.506523,"Paris",4],[0.361929,0.572508,"Bucharest",4],[0.399394,0.481017,"Rabat",4],[0.334211,0.698419,"Astana",4],[0.603583,0.343913,"Montevideo",4],[0.444007,0.76704,"Nay Pyi Taw",4],[0.466082,0.541806,"N'Djamena",4],[0.448925,0.455617,"Nouakchott",4],[0.358066,0.28975,"Ottawa",4],[0.389924,0.528294,"Tunis",4],[0.289467,0.569285,"Helsinki",4],[0.382554,0.28601,"Washington",4],[0.383222,0.474621,"Lisbon",4],[0.604913,0.91417,"Canberra",4],[0.486523,0.587766,"Juba",4],[0.526438,0.908778,"Port Moresby",4],[0.553913,0.318724,"Sucre",4],[0.408597,0.837414,"Shanghai",4],[0.410452,0.789065,"Chengdu",4],[0.435695,0.816818,"Shenzhen",4],[0.428686,0.686169,"Karachi",4],[0.410661,0.8175,"Wuhan",4],[0.445997,0.702439,"Mumbai",4],[0.567342,0.370463,"São Paulo",4],[0.463641,0.715528,"Bengaluru",4],[0.385577,0.81808,"Shijiazhuang",4],[0.418939,0.835265,"Wenzhou",4],[0.364066,0.848106,"Changchun",4],[0.400703,0.818451,"Zhoukou",4],[0.375981,0.294428,"New York",4],[0.434868,0.801008,"Nanning",4],[0.424924,0.831366,"Fuzhou",4],[0.4213,0.809618,"Shaoyang",4],[0.439691,0.70231,"Surat",4],[0.421167,0.792463,"Bijie",4],[0.426896,0.727316,"Prayagraj",4],[0.353139,0.852669,"Suihua",4],[0.613617,0.902675,"Melbourne",4],[0.384231,0.575397,"Izmir",4],[0.364297,0.743372,"Ürümqi",4],[0.392467,0.83422,"Qingdao",4],[0.399289,0.171548,"Los Angeles",4],[0.484647,0.515967,"Warri",4],[0.393498,0.819509,"Puyang",4],[0.42813,0.785302,"Kunming",4],[0.375537,0.810203,"Hohhot",4],[0.438583,0.608793,"Jeddah",4],[0.402571,0.797275,"Hanzhong",4],[0.422323,0.710608,"Jaipur",4],[0.391662,0.665572,"Mashhad",4],[0.377916,0.580743,"Bursa",4],[0.520182,0.813161,"Surabaya",4],[0.371682,0.256599,"Chicago",4],[0.364954,0.279489,"Toronto",4],[0.397134,0.876393,"Osaka",4],[0.436328,0.755096,"Chattogram",4],[0.434844,0.780458,"Pu'er",4],[0.51037,0.392995,"Fortaleza",4],[0.536374,0.393108,"Salvador",4],[0.466443,0.523695,"Kano",4],[0.556491,0.37793,"BH",4],[0.413347,0.23509,"Houston",4],[0.579406,0.925065,"Brisbane",4],[0.389278,0.598126,"Adana",4],[0.392029,0.622248,"Erbil",4],[0.443144,0.806099,"Haikou",4],[0.508703,0.333382,"Manaus",4],[0.593762,0.821835,"Perth",4],[0.470245,0.300988,"Maracaibo",4],[0.367214,0.892651,"Sapporo",4],[0.358572,0.863783,"Jixi",4],[0.385979,0.7851,"Wuwei",4],[0.480326,0.848911,"Davao City",4],[0.573078,0.363135,"Curitiba",4],[0.508306,0.790991,"Palembang",4],[0.474033,0.537204,"Garoua",4],[0.472288,0.716984,"Madurai",4],[0.517049,0.565555,"Kasaï-Oriental",4],[0.592002,0.321713,"Cordoba",4],[0.316158,0.730341,"Novosibirsk",4],[0.400839,0.862227,"Fukuoka",4],[0.401311,0.188683,"Phoenix",4],[0.413836,0.645938,"Shiraz",4],[0.385468,0.628605,"Tabriz",4],[0.307179,0.668356,"Yekaterinburg",4],[0.406953,0.204207,"Ciudad Juárez",4],[0.522459,0.403098,"Recife",4],[0.610256,0.985453,"Auckland",4],[0.514281,0.831701,"Makassar",4],[0.357894,0.525527,"Milan",4],[0.587529,0.357693,"Porto Alegre",4],[0.312471,0.636456,"Kazan",4],[0.50403,0.365366,"Belém",4],[0.511261,0.610187,"Mombasa",4],[0.373839,0.600922,"Samsun",4],[0.40354,0.23112,"Dallas",4],[0.338139,0.854152,"Heihe",4],[0.334576,0.183173,"Calgary",4],[0.603659,0.885,"Adelaide",4],[0.311348,0.757979,"Krasnoyarsk",4],[0.315522,0.670563,"Chelyabinsk",4],[0.400493,0.702959,"Islamabad",5],[0.370164,0.830396,"Chifeng",4],[0.324736,0.639455,"Samara",4],[0.532627,0.576341,"Lubumbashi",4],[0.350822,0.610304,"Rostov-on-Don",4],[0.31762,0.65541,"Ufa",4],[0.359587,0.60827,"Krasnodar",4],[0.379549,0.773594,"Jiuquan",4],[0.31634,0.70381,"Omsk",4],[0.384783,0.891303,"Sendai",4],[0.331841,0.608891,"Voronezh",4],[0.600404,0.571163,"Gqeberha",4],[0.451021,0.717984,"Hyderabad",5],[0.301111,0.656241,"Perm",4],[0.388058,0.161415,"San Jose",4],[0.353817,0.585367,"Odesa",4],[0.546187,0.301286,"Arequipa",4],[0.544416,0.597232,"Blantyre",4],[0.382119,0.849298,"Pyongyang",5],[0.375529,0.53958,"Naples",4],[0.471253,0.844172,"Cebu City",4],[0.411508,0.273179,"Jacksonville",4],[0.323215,0.184747,"Edmonton",4],[0.416918,0.205342,"Chihuahua City",4],[0.440413,0.251045,"Mérida",4],[0.558093,0.348288,"Campo Grande",4],[0.379418,0.260671,"Indianapolis",4],[0.413682,0.753104,"Lhasa",4],[0.388838,0.721975,"Hotan",4],[0.410341,0.809112,"Yichang",5],[0.332425,0.627874,"Saratov",4],[0.42886,0.201685,"Culiacán",4],[0.372247,0.739371,"Korla",4],[0.477994,0.298589,"Cúcuta",4],[0.54192,0.537472,"Lubango",4],[0.338877,0.55538,"Krakow",4],[0.408881,0.769916,"Chamdo",4],[0.516154,0.4022,"Natal",4],[0.395326,0.275436,"Charlotte",4],[0.349253,0.160194,"Seattle",4],[0.339827,0.566754,"Lviv",4],[0.424883,0.227003,"Reynosa",4],[0.394489,0.229119,"Oklahoma City",4],[0.369885,0.30261,"Boston",4],[0.368142,0.759762,"Hami",4],[0.614263,0.340144,"Mar del Plata",4],[0.339596,0.230171,"Winnipeg",4],[0.342315,0.158017,"Vancouver",4],[0.452452,0.222517,"Acapulco",4],[0.392128,0.25896,"Nashville",4],[0.392111,0.180143,"Las Vegas",4],[0.357672,0.159238,"Portland",4],[0.543875,0.344169,"Cuiabá",4],[0.388674,0.607755,"Şanlıurfa",5],[0.4057,0.555781,"Benghazi",4],[0.324141,0.732719,"Barnaul",4],[0.345607,0.875212,"Khabarovsk",4],[0.329006,0.789666,"Irkutsk",4],[0.441893,0.738553,"Cuttack",4],[0.455379,0.706964,"Belagavi",4],[0.407411,0.862659,"Kagoshima",4],[0.414198,0.669029,"Zahedan",4],[0.331363,0.65305,"Orenburg",4],[0.363985,0.725763,"Yining/Qulja",4],[0.303138,0.610815,"Yaroslavl",4],[0.337915,0.658972,"Aktobe",4],[0.466277,0.56911,"Nyala",4],[0.30895,0.735979,"Tomsk",4],[0.323195,0.52778,"Hamburg",5],[0.524841,0.592969,"Mbeya",4],[0.579808,0.36514,"Florianópolis",4],[0.390198,0.487718,"Málaga",4],[0.571114,0.318305,"Salta",4],[0.379833,0.796637,"Wuhai",4],[0.577412,0.318878,"Tucumán",4],[0.518854,0.278226,"Chiclayo",4],[0.302718,0.533242,"Gothenburg",4],[0.55709,0.388038,"Serra",4],[0.339938,0.703063,"Karagandy",4],[0.341492,0.53077,"Nuremberg",4],[0.417663,0.601575,"Tabuk",4],[0.34252,0.832603,"Hulunbuir",4],[0.419882,0.691275,"Sukkur",4],[0.397188,0.494641,"Oujda",4],[0.324848,0.625053,"Penza",4],[0.444405,0.603366,"Port Sudan",4],[0.297999,0.637963,"Kirov",4],[0.354358,0.633424,"Astrakhan",4],[0.320167,0.604493,"Tula",4],[0.510422,0.296543,"Iquitos",4],[0.459025,0.836056,"Manila",5],[0.524399,0.322573,"Porto Velho",4],[0.42953,0.704684,"Udaipur",4],[0.412673,0.713467,"Kurukshetra",5],[0.359814,0.240929,"Minneapolis",4],[0.537901,0.30006,"Cusco",4],[0.49586,0.84678,"Manado",4],[0.323784,0.663842,"Magnitogorsk",4],[0.283297,0.703879,"Surgut",4],[0.357444,0.735796,"Karamay",4],[0.361101,0.323372,"Halifax",4],[0.496627,0.285337,"Pasto",4],[0.540882,0.613018,"Nacala",4],[0.526178,0.387509,"Petrolina",4],[0.57935,0.336149,"Resistencia",4],[0.634576,0.979546,"Christchurch",4],[0.469888,0.796392,"HCMC",5],[0.438789,0.208634,"Tepic",4],[0.37308,0.273073,"Cleveland",4],[0.278774,0.860367,"Yakutsk",4],[0.315361,0.583908,"Vitsebsk",4],[0.386811,0.229618,"Wichita",4],[0.357293,0.841211,"Baicheng",5],[0.339367,0.729521,"Ust-Kamenogorsk",4],[0.522608,0.280476,"Trujillo",5],[0.439408,0.061512,"Honolulu",4],[0.495673,0.806511,"Kuching",4],[0.59696,0.921615,"Newcastle",4],[0.40164,0.833771,"Yancheng",5],[0.447796,0.316343,"San Juan",4],[0.329892,0.565792,"Brest",4],[0.329022,0.713738,"Pavlodar",4],[0.330164,0.81528,"Chita",4],[0.419092,0.270949,"Tampa",4],[0.376605,0.72577,"Aral",4],[0.344654,0.623654,"Volgograd",5],[0.44573,0.714753,"Nanded",5],[0.295178,0.605323,"Cherepovets",4],[0.424507,0.854664,"Naha",4],[0.380135,0.507361,"Palma",4],[0.328139,0.494715,"Birmingham",5],[0.528438,0.36574,"Palmas",4],[0.390237,0.686414,"Mazar i sharif",4],[0.263219,0.612603,"Arkhangelsk",4],[0.418522,0.457125,"Las Palmas de Gran Canaria",4],[0.332585,0.586929,"Chernihiv",4],[0.387252,0.852717,"Seoul",5],[0.412433,0.586766,"Cairo",5],[0.440231,0.794039,"Hanoi",5],[0.598654,0.303749,"Santiago",5],[0.378866,0.591261,"Ankara",5],[0.461426,0.779149,"Bangkok",5],[0.429346,0.629767,"Riyadh",5],[0.406252,0.599789,"Amman",5],[0.474796,0.607646,"Addis Ababa",5],[0.377063,0.489712,"Madrid",5],[0.470651,0.314126,"Caracas",5],[0.385815,0.56593,"Athens",5],[0.337191,0.584789,"Kyiv",5],[0.456226,0.590375,"Khartoum",5],[0.373774,0.692441,"Tashkent",5],[0.45873,0.451534,"Dakar",5],[0.403142,0.536605,"Tripoli",5],[0.491241,0.782484,"Kuala Lumpur",5],[0.464574,0.477777,"Bamako",5],[0.456831,0.622794,"Sana'a",5],[0.499117,0.590504,"Kampala",5],[0.347953,0.796994,"Ulaanbaatar",5],[0.377934,0.623646,"Yerevan",5],[0.367913,0.707241,"Bishkek",5],[0.290881,0.52983,"Oslo",5],[0.462077,0.505861,"Niamey",5],[0.294111,0.550197,"Stockholm",5],[0.385938,0.662173,"Ashgabat",5],[0.449261,0.785037,"Vientiane",5],[0.546467,0.31074,"La Paz",5],[0.572618,0.339904,"Asuncion",5],[0.574052,0.5783,"Pretoria",5],[0.487867,0.551621,"Bangui",5],[0.317808,0.57023,"Vilnius",5],[0.2935,0.568737,"Tallinn",5],[0.481028,0.338438,"Georgetown",5],[0.489599,0.524372,"Malabo",5],[0.481908,0.507293,"Porto-Novo",5],[0.416991,0.714469,"New Delhi",5],[0.570713,0.571969,"Gaborone",5],[0.481011,0.48534,"Yamoussoukro",5],[0.265766,0.439049,"Reykjavik",5],[0.550089,0.967542,"Port Vila",5],[0.374903,0.580489,"Istanbul",5],[0.398593,0.802618,"Xi'an",5],[0.407513,0.706428,"Lahore",5],[0.411776,0.833903,"Hangzhou",5],[0.413965,0.795966,"Chongqing",5],[0.40653,0.825782,"Hefei",5],[0.39058,0.818016,"Handan",5],[0.371954,0.842855,"Shenyang",5],[0.398574,0.825503,"Xuzhou",5],[0.4852,0.488844,"Abidjan",5],[0.382471,0.837856,"Dalian",5],[0.434257,0.70161,"Ahmedabad",5],[0.415657,0.810258,"Changde",5],[0.29074,0.584212,"Saint Petersburg",5],[0.406057,0.811434,"Xiangyang",5],[0.468144,0.719505,"Labbaikudikadu",5],[0.419503,0.817809,"Yichun",5],[0.35034,0.844304,"Qiqihar",5],[0.415424,0.832357,"Jinhua",5],[0.396933,0.815722,"Zhengzhou",5],[0.427509,0.806042,"Guilin",5],[0.42972,0.826785,"Zhangzhou",5],[0.413647,0.822076,"Jiujiang",5],[0.600096,0.920023,"Sydney",5],[0.425863,0.813915,"Chenzhou",5],[0.422564,0.724818,"Lucknow",5],[0.408705,0.583042,"Alexandria",5],[0.43561,0.745455,"Kolkata",5],[0.375598,0.819106,"Zhangjiakou",5],[0.390389,0.825055,"Jinan",5],[0.393775,0.888228,"Tokyo",6],[0.387422,0.808717,"Lüliang",5],[0.432255,0.814029,"Qingyuan",5],[0.392474,0.788422,"Lanzhou",5],[0.395487,0.858542,"Busan",5],[0.586982,0.586139,"Durban",5],[0.427427,0.65359,"Dubai",5],[0.403072,0.826063,"Bengbu",5],[0.435166,0.710745,"Indore",5],[0.356722,0.851743,"Harbin",5],[0.413903,0.788188,"Leshan",5],[0.470377,0.5398,"Maroua",5],[0.378798,0.832193,"Qinhuangdao",5],[0.365101,0.839611,"Tongliao",5],[0.428812,0.815534,"Shaoguan",5],[0.387443,0.839209,"Weihai",5],[0.435467,0.8342,"Kaohsiung",5],[0.406522,0.796505,"Bazhong City",5],[0.393678,0.798996,"Qingyang",5],[0.490406,0.287409,"Cali",5],[0.389625,0.585286,"Antalya",5],[0.432043,0.803381,"Laibin",5],[0.431633,0.778022,"Lincang",5],[0.427889,0.775442,"Baoshan",5],[0.48262,0.290073,"Medellín",5],[0.439869,0.719672,"Nagpur",5],[0.386177,0.590257,"Konya",5],[0.352524,0.862152,"Jiamusi",5],[0.410983,0.632803,"Basra",5],[0.381759,0.825531,"Tianjin",6],[0.403888,0.643514,"Isfahan",5],[0.499861,0.604583,"Meru",5],[0.404347,0.174946,"Tijuana",5],[0.483411,0.528199,"Bamenda",5],[0.380995,0.812295,"Shuozhou",5],[0.373513,0.506048,"Barcelona",5],[0.438871,0.803102,"Beihai",5],[0.439952,0.217549,"León",5],[0.48135,0.495491,"Kumasi",5],[0.421513,0.716694,"Agra",5],[0.347044,0.532154,"Munich",5],[0.339178,0.600642,"Kharkiv",5],[0.414416,0.226402,"San Antonio",5],[0.431581,0.796152,"Baise",5],[0.385739,0.794984,"Wuzhong",5],[0.597066,0.331495,"Rosario",5],[0.424605,0.754862,"Guwahati",5],[0.370038,0.693301,"Shymkent",5],[0.40609,0.623139,"Al-Najaf",5],[0.422497,0.778403,"Lijiang",5],[0.309765,0.622236,"Nizhny Novgorod",5],[0.43745,0.76693,"Mandalay",5],[0.431916,0.740086,"Dhanbad",5],[0.383957,0.620541,"Van",5],[0.417483,0.827606,"Shangrao",6],[0.399352,0.486066,"Fez",5],[0.507001,0.591393,"Mwanza",5],[0.429858,0.610031,"Medina",5],[0.345663,0.597338,"Dnipro",5],[0.397308,0.641334,"Qom",5],[0.507029,0.376954,"São Luís",5],[0.424245,0.702875,"Jodhpur",5],[0.477332,0.511806,"Ogbomosho",5],[0.470876,0.290155,"Cartagena",5],[0.439606,0.72676,"Raipur",5],[0.513342,0.532918,"Pointe-Noire",5],[0.427708,0.710715,"Kota",5],[0.411947,0.686159,"Quetta",5],[0.502569,0.778787,"Padang",5],[0.449965,0.731392,"Visakhapatnam",5],[0.361487,0.860072,"Mudanjiang",5],[0.526927,0.400739,"Maceió",5],[0.419247,0.784063,"Xichang",5],[0.473756,0.49766,"Tamale",5],[0.393476,0.48388,"Tangier",5],[0.398381,0.63076,"Kermanshah",5],[0.347549,0.605004,"Donetsk",5],[0.388481,0.578788,"Muğla",5],[0.479608,0.537744,"Ngaoundéré",5],[0.565409,0.379974,"Rio de Janeiro",6],[0.439833,0.258746,"Cancún",5],[0.348769,0.858,"Yichun",5],[0.51415,0.381097,"Teresina",5],[0.426942,0.219465,"Saltillo",5],[0.415466,0.191752,"Hermosillo",5],[0.393699,0.498194,"Oran",5],[0.381917,0.67662,"Turkmenabat",5],[0.305576,0.682062,"Tyumen",5],[0.374906,0.610362,"Trabzon",5],[0.534576,0.537629,"Lobito",5],[0.524127,0.820053,"Denpasar",5],[0.384496,0.606442,"Malatya",5],[0.322037,0.495712,"Leeds",5],[0.423149,0.796179,"Guiyang",6],[0.374526,0.836441,"Jinzhou",6],[0.414511,0.699066,"Bahawalpur",5],[0.378919,0.614647,"Erzurum",5],[0.380495,0.498955,"Valencia",5],[0.504528,0.787799,"Jambi",5],[0.47637,0.846228,"CDO",5],[0.501394,0.825387,"Samarinda",5],[0.379523,0.208375,"Denver",5],[0.553534,0.365898,"Uberlândia",5],[0.423394,0.799936,"Kaili",5],[0.394329,0.599384,"Latakia",5],[0.434527,0.659809,"Nizwa",5],[0.560214,0.367194,"Ribeirão Preto",5],[0.367559,0.747909,"Turpan",5],[0.379996,0.804934,"Ordos",5],[0.426574,0.212749,"Torreón",5],[0.367811,0.859734,"Yanji",5],[0.448416,0.804176,"Sanya",5],[0.388257,0.637735,"Rasht",5],[0.500063,0.803735,"Pontianak",5],[0.369974,0.269315,"Detroit",5],[0.372026,0.860613,"Chŏngjin",5],[0.380506,0.711083,"Kashgar",5],[0.405593,0.706093,"Gujranwala",6],[0.557181,0.579413,"Bulawayo",5],[0.410878,0.825143,"Anqing",6],[0.418878,0.703659,"Bikaner",5],[0.30704,0.647804,"Izhevsk",5],[0.372514,0.497553,"Zaragoza",5],[0.390608,0.804132,"Yan'an",5],[0.519273,0.79892,"Bandung",6],[0.334296,0.547313,"Wrocław",5],[0.395602,0.249856,"Memphis",5],[0.385336,0.53709,"Palermo",5],[0.56842,0.581837,"Polokwane",5],[0.367514,0.631958,"Makhachkala",5],[0.509366,0.601911,"Arusha",5],[0.521206,0.541823,"Uíge",5],[0.319587,0.634454,"Ulyanovsk",5],[0.384831,0.261779,"Louisville",5],[0.312082,0.488194,"Glasgow",5],[0.367302,0.255808,"Milwaukee",5],[0.530508,0.397007,"Aracaju",5],[0.377404,0.601534,"Tokat",5],[0.433123,0.787117,"Mengzi",5],[0.375874,0.798283,"Bayannur",5],[0.452784,0.241345,"Tuxtla Gutiérrez",5],[0.33456,0.538162,"Dresden",5],[0.332745,0.519488,"Essen",5],[0.395812,0.203747,"Albuquerque",5],[0.566618,0.35789,"Londrina",5],[0.359555,0.616581,"Stavropol",5],[0.459431,0.722187,"Nellore",5],[0.405362,0.191737,"Tucson",5],[0.561955,0.379583,"Juiz de Fora",5],[0.411636,0.658513,"Kerman",5],[0.328393,0.586148,"Homel",5],[0.322224,0.742044,"Novokuznetsk",5],[0.352484,0.302199,"Quebec",5],[0.547005,0.363185,"Goiânia",6],[0.4215,0.656328,"Bandar Abbas",5],[0.328618,0.527052,"Hanover",5],[0.318084,0.610396,"Ryazan",5],[0.535885,0.578352,"Kitwe",5],[0.378048,0.573341,"Çanakkale",5],[0.406585,0.630971,"Amarah",5],[0.386298,0.714696,"Saybagh",5],[0.400308,0.265583,"Atlanta",5],[0.407796,0.755694,"Nagqu",5],[0.478459,0.523718,"Makurdi",5],[0.356728,0.513422,"Lyon",5],[0.483364,0.822425,"Kota Kinabalu",5],[0.426369,0.736454,"Patna",5],[0.428856,0.760935,"Imphal",5],[0.426858,0.718278,"Jhansi",5],[0.508052,0.280544,"Cuenca",5],[0.383672,0.162517,"Sacramento",5],[0.32757,0.609982,"Lipetsk",5],[0.317697,0.556974,"Kaliningrad",5],[0.373972,0.233505,"Omaha",5],[0.405111,0.474335,"Safi",5],[0.382772,0.208818,"Colorado Springs",5],[0.457437,0.713665,"Ballari",5],[0.514456,0.276037,"Piura",5],[0.401162,0.851425,"Jeju-si",5],[0.417368,0.684067,"Surab",5],[0.366814,0.845458,"Siping",6],[0.332765,0.492785,"Bristol",5],[0.381821,0.237283,"Kansas City",5],[0.440324,0.709912,"Jalgaon",5],[0.389752,0.288955,"Virginia Beach",5],[0.36127,0.593117,"Sevastopol",5],[0.475597,0.289226,"Montería",5],[0.426083,0.590687,"Luxor",5],[0.52838,0.843338,"Kupang",5],[0.407334,0.682544,"Kandahar",5],[0.391432,0.518357,"Constantine",5],[0.371453,0.851162,"Baishan",5],[0.499888,0.358175,"Macapá",5],[0.433708,0.204387,"Mazatlán",5],[0.365142,0.504012,"Toulouse",5],[0.592394,0.309652,"San Juan",5],[0.476801,0.325862,"Ciudad Guayana",6],[0.486741,0.519497,"Port Harcourt",6],[0.331055,0.798844,"Ulan-Ude",5],[0.331525,0.600534,"Kursk",5],[0.44828,0.618704,"Khamis Mushayt",5],[0.463052,0.583952,"Al-Ubayyid",5],[0.463401,0.514548,"Sokoto",5],[0.482959,0.778801,"Alor Setar",5],[0.488202,0.827459,"Tawau",5],[0.420519,0.223591,"Nuevo Laredo",5],[0.30708,0.59978,"Tver",5],[0.547139,0.378134,"Montes Claros",5],[0.492161,0.331467,"Boa Vista",5],[0.394202,0.626229,"Sulaymaniyah",6],[0.372425,0.573774,"Edirne",5],[0.425861,0.27724,"Miami",5],[0.323756,0.540419,"Szczecin",5],[0.514108,0.608609,"Tanga",5],[0.59266,0.331383,"Santa Fe",5],[0.361705,0.531507,"Bologna",5],[0.412652,0.249783,"New Orleans",5],[0.563636,0.363693,"Bauru",5],[0.32463,0.595463,"Bryansk",5],[0.394827,0.16939,"Bakersfield",5],[0.428126,0.837677,"Taipei",6],[0.541739,0.386551,"Vitória da Conquista",5],[0.458957,0.592864,"Ar Rufa`iyyin",6],[0.453775,0.834982,"Baguio",5],[0.396004,0.808339,"Yuncheng",6],[0.527854,0.311605,"Rio Branco",5],[0.580327,0.583122,"Newcastle",5],[0.541177,0.549117,"Menongue",5],[0.306368,0.613816,"Ivanovo",5],[0.383047,0.58483,"Afyonkarahisar",6],[0.322572,0.566206,"Hrodna",5],[0.516546,0.581102,"Kalemie",5],[0.385835,0.596323,"Niğde",5],[0.398291,0.672823,"Herat",5],[0.398798,0.621944,"Samarra",5],[0.567633,0.30445,"Antofagasta",5],[0.571623,0.351511,"Cascavel",5],[0.310752,0.612243,"Vladimir",5],[0.301686,0.66653,"Nizhny Tagil",5],[0.366448,0.491847,"Bilbao",5],[0.333669,0.562695,"Lublin",5],[0.44919,0.241843,"Villahermosa",5],[0.40615,0.835807,"Nantong",6],[0.369491,0.665605,"Nukus",5],[0.502488,0.832967,"Palu",5],[0.506776,0.348057,"Santarém",5],[0.325188,0.550001,"Bydgoszcz",5],[0.389788,0.6512,"Gorgan",5],[0.420545,0.194628,"Ciudad Obregón",5],[0.401191,0.634316,"Khorramabad",5],[0.400912,0.870943,"Kochi",5],[0.374463,0.546839,"Bari",5],[0.384514,0.498644,"Alicante",5],[0.523367,0.292948,"Pucallpa",5],[0.593154,0.354608,"Pelotas",5],[0.547242,0.608949,"Moma",5],[0.351291,0.644205,"Atyrau",5],[0.376648,0.702197,"Osh",5],[0.537416,0.607152,"Balama",5],[0.356744,0.55896,"Timișoara",5],[0.425732,0.744225,"Karandighi",5],[0.464561,0.523374,"kazaure",6],[0.493214,0.287202,"Popayán",5],[0.482714,0.587671,"Bor",5],[0.320197,0.625511,"Saransk",5],[0.376972,0.277805,"Pittsburgh",5],[0.420432,0.615829,"Ha'il",5],[0.350834,0.495683,"Nantes",5],[0.379593,0.889176,"Akita",5],[0.472814,0.829844,"Pto. Princesa",5],[0.439185,0.28356,"Camagüey",5],[0.438939,0.782125,"Mengla",5],[0.314151,0.681506,"Kurgan",5],[0.383505,0.249469,"St. Louis",5],[0.616814,0.32704,"Bahía Blanca",5],[0.392436,0.278356,"Greensboro",5],[0.425803,0.197249,"Los Mochis",5],[0.436683,0.228173,"Tampico",5],[0.432009,0.751081,"Dhaka",6],[0.397701,0.69216,"Kabul",6],[0.602562,0.337829,"Buenos Aires",6],[0.371615,0.534675,"Rome",6],[0.500612,0.28191,"Quito",6],[0.458876,0.248575,"Guate",6],[0.377213,0.638424,"Baku",6],[0.433914,0.271225,"Havana",6],[0.467645,0.791451,"Phnom Penh",6],[0.321542,0.576561,"Minsk",6],[0.473315,0.622394,"Hargeisa",6],[0.346748,0.545479,"Vienna",6],[0.489245,0.532004,"Yaoundé",6],[0.329266,0.558352,"Warsaw",6],[0.543349,0.578561,"Lusaka",6],[0.473441,0.461945,"Conakry",6],[0.550352,0.586238,"Harare",6],[0.368595,0.564783,"Sofia",6],[0.447556,0.299057,"PAP",6],[0.574732,0.590465,"Maputo",6],[0.36044,0.556825,"Belgrade",6],[0.432544,0.662175,"Muscat",6],[0.482386,0.470006,"Monrovia",6],[0.419844,0.737002,"Kathmandu",6],[0.447752,0.305716,"Santo Domingo",6],[0.474977,0.279072,"Panama",6],[0.383689,0.691073,"Dushanbe",6],[0.482938,0.503377,"Lomé",6],[0.539246,0.5938,"Lilongwe",6],[0.312943,0.534917,"Copenhagen",6],[0.456873,0.608146,"Asmara",6],[0.324133,0.48261,"Dublin",6],[0.564405,0.547437,"Windhoek",6],[0.364191,0.551074,"Sarajevo",6],[0.483792,0.346749,"Paramaribo",6],[0.626139,0.985492,"Wellington",6],[0.369561,0.553506,"Podgorica",6],[0.45809,0.434696,"Praia",6],[0.48082,0.721997,"Sri Jayawardenepura Kotte",6],[0.496252,0.980663,"South Tarawa",6],[0.526317,0.94432,"Honiara",6],[0.499059,0.518698,"São Tomé",6],[0.43393,0.814609,"Guangzhou",6],[0.40595,0.829941,"Nanjing",6],[0.390247,0.830988,"Weifang",6],[0.395257,0.820685,"Heze",6],[0.403155,0.821692,"Fuyang",6],[0.413017,0.837834,"Ningbo",6],[0.435422,0.80598,"Yulin",6],[0.384654,0.824587,"Cangzhou",6],[0.41979,0.797297,"Zunyi",6],[0.43265,0.823245,"Jieyang",6],[0.387708,0.823204,"Dezhou",6],[0.409869,0.794741,"Nanchong",6],[0.518978,0.609112,"Dar es-Salaam",6],[0.400645,0.824886,"Suzhou",6],[0.418199,0.813704,"Changsha",6],[0.423852,0.810023,"Yongzhou",6],[0.420992,0.788096,"Zhaotong",6],[0.407856,0.790878,"Mianyang",6],[0.421767,0.819337,"Ji'an",6],[0.420273,0.805548,"Huaihua",6],[0.463336,0.722973,"Chennai",6],[0.416542,0.790668,"Yibin",6],[0.575471,0.577916,"Johannesburg",6],[0.397474,0.831159,"Lianyungang",6],[0.430405,0.822548,"Meizhou",6],[0.430294,0.803955,"Liuzhou",6],[0.419872,0.811081,"Loudi",6],[0.387898,0.82768,"Binzhou",6],[0.384721,0.804803,"Yulin",6],[0.408203,0.828966,"Wuhu",6],[0.395393,0.814593,"Jiaozuo",6],[0.386186,0.812626,"Taiyuan",6],[0.506085,0.278092,"Guayaquil",6],[0.375107,0.827658,"Chengde",6],[0.372799,0.834553,"Chaoyang",6],[0.400824,0.478833,"Casablanca",6],[0.404018,0.807758,"Shiyan",6],[0.392057,0.814165,"Changzhi",6],[0.378245,0.814709,"Datong",6],[0.397519,0.793629,"Tianshui",6],[0.447631,0.705151,"Pune",6],[0.384265,0.81314,"Xinzhou",6],[0.479449,0.510826,"Ibadan",6],[0.38988,0.827913,"Zibo",6],[0.412322,0.788461,"Meishan",6],[0.432063,0.818598,"Heyuan",6],[0.353362,0.847504,"Daqing",6],[0.409694,0.83357,"Huzhou",6],[0.423088,0.832065,"Ningde",6],[0.432875,0.809103,"Wuzhou",6],[0.394121,0.790619,"Dingxi",6],[0.395748,0.828752,"Linyi",6],[0.37633,0.805403,"Baotou",6],[0.413076,0.817547,"Xianning",6],[0.420855,0.827987,"Nanping",6],[0.401564,0.791548,"Longnan",6],[0.428006,0.825034,"Longyan",6],[0.424337,0.826761,"Sanming",6],[0.393127,0.857227,"Daegu",6],[0.437748,0.811049,"Yangjiang",6],[0.390558,0.782712,"Xining",6],[0.404672,0.794045,"Guangyuan",6],[0.430224,0.784797,"Yuxi",6],[0.392001,0.603233,"Aleppo",6],[0.395469,0.880277,"Nagoya",6],[0.409646,0.710699,"Ludhiana",6],[0.430053,0.809894,"Hezhou",6],[0.36655,0.713738,"Almaty",6],[0.425678,0.819246,"Ganzhou",6],[0.435909,0.694598,"Jamnagar",6],[0.374962,0.814254,"Ulanqab",6],[0.417445,0.833107,"Lishui",6],[0.490022,0.774094,"Medan",6],[0.402796,0.812581,"Nanyang",6],[0.550211,0.324494,"Santa Cruz de la Sierra",6],[0.426842,0.830564,"Putian",6],[0.477483,0.715416,"Kanyakumari",6],[0.386024,0.611768,"Diyarbakir",6],[0.433542,0.715006,"Bhopal",6],[0.35774,0.295639,"Montreal",6],[0.390807,0.789265,"Baiyin",6],[0.391997,0.825225,"Tai'an",6],[0.427053,0.689921,"Hyderabad",6],[0.40451,0.623424,"Al Hillah",6],[0.378751,0.291212,"Philadelphia",6],[0.422942,0.745642,"Siliguri",6],[0.409966,0.801121,"Wanzhou",6],[0.519466,0.80673,"Semarang",6],[0.37453,0.84164,"Anshan",6],[0.398068,0.821252,"Shangqiu",6],[0.443247,0.704973,"Nashik",6],[0.395557,0.852365,"Gwangju",6],[0.398256,0.797867,"Baoji",6],[0.44129,0.212949,"Guadalajara",6],[0.413481,0.828701,"Huangshan",6],[0.384013,0.795073,"Yinchuan",6],[0.402847,0.696121,"Bannu",6],[0.37116,0.837904,"Fuxin",6],[0.405614,0.816903,"Xinyang",6],[0.382406,0.779043,"Zhangye",6],[0.387485,0.792202,"Zhongwei",6],[0.423348,0.78255,"Panzhihua",6],[0.469272,0.292242,"Barranquilla",6],[0.398153,0.867922,"Hiroshima",6],[0.394695,0.823847,"Jining",6],[0.466876,0.536538,"Maiduguri",6],[0.379854,0.577467,"Balıkesir",6],[0.408303,0.63522,"Ahwaz",6],[0.399218,0.707835,"Srinagar",6],[0.382686,0.820807,"Baoding",6],[0.482372,0.515617,"Benin City",6],[0.394677,0.832004,"Rizhao",6],[0.392635,0.795105,"Guyuan",6],[0.565393,0.369279,"Campinas",6],[0.35918,0.846714,"Songyuan",6],[0.386263,0.577343,"Aydin",6],[0.387201,0.602576,"Kahramanmaraş",6],[0.375761,0.584455,"Sakarya",6],[0.335049,0.519333,"Cologne",6],[0.386493,0.580824,"Denizli",6],[0.46925,0.713786,"Coimbatore",6],[0.453494,0.72394,"Vijayawada",6],[0.444705,0.80436,"Danzhou City",6],[0.498538,0.78181,"Pekanbaru",6],[0.42795,0.791371,"Xingyi",6],[0.52248,0.810836,"Tulungagung",6],[0.391721,0.638907,"Qazvin",6],[0.456392,0.255486,"San Pedro Sula",6],[0.534097,0.573331,"Solwezi",6],[0.397999,0.599541,"Tripoli",6],[0.480774,0.839101,"Zamboanga City",6],[0.411704,0.22849,"Austin",6],[0.39698,0.52989,"Sfax",6],[0.45012,0.710836,"Solapur",6],[0.596834,0.308765,"Mendoza",6],[0.515151,0.792401,"Bandar Lampung",6],[0.407316,0.477808,"Marrakesh",6],[0.378716,0.269442,"Columbus",6],[0.427051,0.637674,"Al Ahsa",6],[0.359459,0.52134,"Turin",6],[0.483248,0.519214,"Nnewi",6],[0.417809,0.720605,"Bareilly",6],[0.40377,0.802827,"Ankang",6],[0.379396,0.584775,"Eskisehir",6],[0.465553,0.712932,"Mysuru",6],[0.38903,0.603832,"Şahinbey",6],[0.4193,0.716858,"Aligarh",6],[0.437687,0.215842,"Aguascalientes City",6],[0.388138,0.613154,"Mardin",6],[0.366322,0.514917,"Marseille",6],[0.403988,0.179236,"Mexicali",6],[0.41162,0.804096,"Enshi",6],[0.396446,0.802612,"Tongchuan",6],[0.519833,0.403105,"João Pessoa",6],[0.37813,0.845506,"Dandong",6],[0.449209,0.721103,"Warangal",6],[0.386023,0.886213,"Niigata",6],[0.386506,0.159946,"San Francisco",6],[0.397076,0.882572,"Hamamatsu",6],[0.441517,0.221119,"Querétaro City",6],[0.484938,0.778691,"George Town",6],[0.376246,0.563709,"Thessaloniki",6],[0.382226,0.795492,"Shizuishan",6],[0.378882,0.854273,"Hamhung",6],[0.356678,0.863907,"Qitaihe",6],[0.37498,0.605222,"Ordu",6],[0.409209,0.628444,"Nasiriyah",6],[0.444159,0.21891,"Morelia",6],[0.403516,0.863148,"Kumamoto",6],[0.387316,0.625185,"Urmia",6],[0.468755,0.488066,"Bobo-Dioulasso",6],[0.397264,0.871998,"Okayama",6],[0.331356,0.554047,"Łódź",6],[0.517162,0.60891,"Zanzibar City",6],[0.348233,0.597551,"Zaporizhzhia",6],[0.414904,0.746891,"Shigatse",6],[0.338666,0.524117,"Frankfurt",6],[0.503444,0.824609,"Balikpapan",6],[0.370132,0.843999,"Tieling",6],[0.482989,0.847701,"Gensan",6],[0.387875,0.483346,"Seville",6],[0.374927,0.699091,"Namangan",6],[0.472172,0.711793,"Kochi",6],[0.422807,0.731574,"Gorakhpur",6],[0.434874,0.748788,"Khulna",6],[0.509224,0.818313,"Banjarmasin",6],[0.347987,0.592755,"Kryvyi Rih",6],[0.39329,0.853187,"Jeonju",6],[0.440518,0.715997,"Amravati",6],[0.437322,0.779919,"Jinghong",6],[0.491887,0.530977,"Ebolowa",6],[0.333268,0.534374,"Leipzig",6],[0.379483,0.602818,"Sivas",6],[0.37612,0.839544,"Yingkou",6],[0.392382,0.809758,"Linfen",6],[0.575779,0.364309,"Joinville",6],[0.534312,0.391778,"Feira de Santana",6],[0.431227,0.209292,"Durango City",6],[0.416851,0.837268,"Taizhou",6],[0.344358,0.5255,"Stuttgart",6],[0.58108,0.926152,"Gold Coast",6],[0.473024,0.722248,"Jaffna",6],[0.404864,0.541918,"Misrata",6],[0.367012,0.866349,"Vladivostok",6],[0.438012,0.700393,"Bhavnagar",6],[0.399179,0.638026,"Arak",6],[0.362042,0.524816,"Genoa",6],[0.381137,0.287192,"Baltimore",6],[0.480156,0.296894,"Bucaramanga",6],[0.43951,0.612266,"At Ta'if",6],[0.379827,0.686044,"Samarqand",6],[0.330656,0.512438,"Rotterdam",6],[0.366475,0.278131,"Hamilton",6],[0.421488,0.586626,"Asyut",6],[0.471706,0.320328,"Barcelona",6],[0.325402,0.524464,"Bremen",6],[0.314571,0.739131,"Kemerovo",6],[0.452932,0.706224,"Kolhapur",6],[0.426407,0.778464,"Dali",6],[0.312671,0.645553,"Naberezhnye Chelny",6],[0.328465,0.547038,"Poznan",6],[0.489441,0.787006,"Kuantan",6],[0.323987,0.495916,"Sheffield",6],[0.387408,0.617936,"Shrnak",6],[0.350389,0.861857,"Hegang",6],[0.423711,0.707331,"Ajmer",6],[0.486407,0.495134,"Takoradi",6],[0.408497,0.589738,"Port Said",6],[0.379596,0.619585,"Ağrı",6],[0.487658,0.291081,"Ibagué",6],[0.37658,0.597112,"Çorum",6],[0.42855,0.75519,"Sylhet",6],[0.396778,0.634765,"Hamedan",6],[0.374304,0.722939,"Aksu",6],[0.472807,0.324475,"Maturin",6],[0.390135,0.167264,"Fresno",6],[0.464175,0.625079,"`Adan",6],[0.333799,0.512221,"Antwerp",6],[0.463946,0.707897,"Mangaluru",6],[0.433809,0.722035,"Jabalpur",6],[0.469807,0.718575,"Trichy",6],[0.434921,0.739453,"Jamshedpur",6],[0.424533,0.717104,"Gwalior",6],[0.436438,0.703317,"Vadodara",6],[0.362452,0.739104,"Shihezi",6],[0.310743,0.631236,"Cheboksary",6],[0.414283,0.715823,"Muzaffarnagar",6],[0.412657,0.590381,"Suez",6],[0.41406,0.802132,"Qianjiang",6],[0.319429,0.551817,"Gdansk",6],[0.406563,0.650916,"Yazd",6],[0.561936,0.385211,"Campos",6],[0.38484,0.634159,"Ardabil",6],[0.351825,0.588872,"Mykolaiv",6],[0.542494,0.60906,"Nampula",6],[0.402006,0.865582,"Oita",6],[0.383887,0.78385,"Jinchang",6],[0.424137,0.622144,"Buraydah",6],[0.39075,0.879602,"Kanazawa",6],[0.584769,0.357834,"Caxias do Sul",6],[0.428864,0.736133,"Gaya",6],[0.402886,0.705761,"Bhimber",6],[0.461933,0.622282,"Ta'izz",6],[0.485907,0.290259,"Manizales",6],[0.455455,0.716785,"Kurnool",6],[0.532952,0.555312,"Luena",6],[0.493903,0.784024,"Malacca City",6],[0.510644,0.590559,"Kahama",6],[0.351336,0.604305,"Mariupol",6],[0.529945,0.570742,"Kolwezi",6],[0.430162,0.746089,"Rajshahi",6],[0.365215,0.610342,"Sochi",6],[0.444636,0.230793,"Xalapa",6],[0.350196,0.523725,"Zurich",6],[0.429963,0.773857,"Mangshi",6],[0.483752,0.8281,"Sandakan",6],[0.456548,0.601047,"Kassala",6],[0.459382,0.710891,"Davanagere",6],[0.323863,0.49169,"Liverpool",6],[0.443217,0.289363,"Santiago de Cuba",6],[0.367823,0.698269,"Taraz",6],[0.386535,0.584865,"Isparta",6],[0.404448,0.627305,"Al-Kut",6],[0.367513,0.274324,"London",6],[0.411224,0.473378,"Agadir",6],[0.452388,0.771212,"Hpa-An",6],[0.417611,0.695288,"Rahim Yar Khan",6],[0.345228,0.609159,"Luhansk",6],[0.408466,0.700862,"Jhang",6],[0.392148,0.233353,"Tulsa",6],[0.427476,0.741619,"Bhagalpur",6],[0.407685,0.595717,"Gaza",6],[0.500286,0.596539,"Kisumu",6],[0.418092,0.804705,"Jishou",6],[0.383134,0.61525,"Muş",6],[0.515803,0.832632,"Jeneponto",6],[0.533773,0.291083,"Huancayo",6],[0.45843,0.619318,"Hodeidah",6],[0.433731,0.761152,"Kalay",6],[0.473232,0.616268,"Dire Dawa",6],[0.482951,0.784,"Kota Bharu",6],[0.410414,0.703086,"Sahiwal",6],[0.4798,0.514426,"Akure",6],[0.390375,0.634665,"Zanjan",6],[0.456449,0.83497,"Tarlac City",6],[0.420477,0.834439,"Lingxi",6],[0.452233,0.728431,"Kakinada",6],[0.463141,0.590757,"Kosti",6],[0.465949,0.518502,"Gusau",6],[0.447992,0.712674,"Latur",6],[0.364507,0.531265,"Florence",6],[0.321511,0.584286,"Mahilyow",6],[0.342607,0.546143,"Brno",6],[0.515462,0.533867,"Cabinda",6],[0.485174,0.786495,"Kuala Terengganu",6],[0.342437,0.579078,"Vinnytsia",6],[0.380733,0.8388,"Pulandian",6],[0.370686,0.56875,"Plovdiv",6],[0.400964,0.830854,"Huai'an",7],[0.379305,0.718184,"Maralbeshi",6],[0.49566,0.584022,"Bunia",6],[0.57769,0.363706,"Blumenau",6],[0.427173,0.707322,"Bhilwara",6],[0.399427,0.69883,"Peshawar",7],[0.40897,0.7068,"Kasur",6],[0.355482,0.839132,"Ulanhot",6],[0.394038,0.786778,"Linxia",6],[0.460601,0.59833,"Al-Qadarif",6],[0.525313,0.281684,"Chimbote",6],[0.558313,0.368331,"Franca",6],[0.410631,0.589659,"Al Ismailiya",6],[0.453624,0.798851,"Huế",6],[0.445954,0.707637,"Ahmednagar",6],[0.390813,0.588894,"Alanya",6],[0.36666,0.577546,"Varna",6],[0.389055,0.891355,"Iwaki",6],[0.376909,0.858066,"Tanchon",6],[0.367557,0.852068,"Huadian",6],[0.555983,0.366843,"Uberaba",6],[0.422057,0.637926,"Al Jubayl",6],[0.541399,0.541747,"Matala",6],[0.318656,0.600722,"Kaluga",6],[0.336555,0.601631,"Belgorod",6],[0.318243,0.483527,"Belfast",6],[0.460886,0.836567,"Lipa",6],[0.432087,0.2246,"Ciudad Victoria",6],[0.385985,0.616506,"Siirt",6],[0.366232,0.626926,"Grozny",6],[0.354464,0.867219,"Baoqing",6],[0.351437,0.542884,"Graz",6],[0.396868,0.701002,"Mingora",6],[0.476313,0.523652,"Lafia",6],[0.406532,0.176103,"Ensenada",6],[0.364504,0.895458,"Asahikawa",6],[0.381562,0.853968,"Wonsan",6],[0.364693,0.853728,"Jiaohe",6],[0.330229,0.523697,"Bielefeld",6],[0.452572,0.710326,"Vijayapura",6],[0.551297,0.63725,"Toamasina",6],[0.317354,0.589017,"Smolensk",6],[0.598611,0.920394,"Gosford",6],[0.352664,0.565528,"Cluj-Napoca",6],[0.573347,0.348286,"Ciudad del Este",6],[0.394211,0.517158,"Batna",6],[0.438759,0.695717,"Junagadh",6],[0.443426,0.720274,"Chandrapur",6],[0.379652,0.849691,"Kaechon",6],[0.510542,0.784062,"Bengkulu",6],[0.419671,0.229435,"Corpus Christi",6],[0.471192,0.527348,"Bauchi",6],[0.31679,0.566401,"Kaunas",6],[0.420295,0.712815,"Alwar",6],[0.294689,0.610815,"Vologda",6],[0.566241,0.37254,"São José dos Campos",7],[0.33739,0.722916,"Semey",6],[0.40359,0.560438,"Bayda",6],[0.34134,0.52352,"Mannheim",6],[0.390735,0.647385,"Sari",6],[0.500779,0.600198,"Nakuru",6],[0.383927,0.849321,"Sariwon",6],[0.417218,0.273947,"Orlando",6],[0.3658,0.731188,"Xinyuan",6],[0.414789,0.585667,"Faiyum",6],[0.325967,0.496807,"Nottingham",6],[0.441412,0.258117,"Playa del Carmen",6],[0.473155,0.518188,"Minna",6],[0.41527,0.710359,"Hisar",6],[0.384859,0.560375,"Patras",6],[0.480625,0.53088,"Nguroje",6],[0.381816,0.265243,"Cincinnati",6],[0.373937,0.848191,"Huanren",6],[0.387477,0.541909,"Catania",6],[0.450487,0.622846,"Najran",6],[0.325896,0.600193,"Oryol",6],[0.34091,0.595974,"Poltava",6],[0.32514,0.564331,"Białystok",6],[0.365116,0.510769,"Montpellier",6],[0.480269,0.303451,"Arauca",6],[0.440651,0.288169,"Holguín",6],[0.447811,0.229471,"Tehuacán",6],[0.48706,0.294212,"Bogota",7],[0.401095,0.60086,"Damascus",7],[0.349689,0.55289,"Budapest",7],[0.338766,0.540059,"Prague",7],[0.553508,0.632016,"Antananarivo",7],[0.37236,0.624448,"Tbilisi",7],[0.460415,0.257767,"Tegucigalpa",7],[0.465982,0.260351,"Managua",7],[0.476361,0.463145,"Freetown",7],[0.429911,0.651048,"Abu Dhabi",7],[0.498865,0.526227,"Libreville",7],[0.371231,0.559533,"Skopje",7],[0.406817,0.597849,"Jerusalem",7],[0.474716,0.520804,"Abuja",7],[0.517198,0.599297,"Dodoma",7],[0.351626,0.58009,"Chișinău",7],[0.356508,0.544381,"Zagreb",7],[0.306618,0.566959,"Riga",7],[0.373715,0.555051,"Tirana",7],[0.346984,0.547526,"Bratislava",7],[0.584603,0.572821,"Bloemfontein",7],[0.47227,0.266446,"San José",7],[0.428001,0.285171,"Nassau",7],[0.585219,0.576328,"Maseru",7],[0.335454,0.512088,"Brussels",7],[0.351936,0.5207,"Bern",7],[0.340818,0.517027,"Luxembourg",7],[0.532709,0.620151,"Moroni",7],[0.488384,0.704196,"Malé",7],[0.551257,0.995673,"Suva",7],[0.420587,0.748982,"Thimphu",7],[0.486401,0.819283,"Bandar Seri Begawan",7],[0.408372,0.834947,"Suzhou",7],[0.482031,0.509428,"Lagos",7],[0.428622,0.829645,"Quanzhou",7],[0.379919,0.828261,"Tangshan",7],[0.407474,0.834154,"Wuxi",7],[0.436492,0.817119,"Hong Kong",7],[0.426725,0.788318,"Qujing",7],[0.395071,0.816445,"Xinxiang",7],[0.452659,0.767114,"Yangon",7],[0.416758,0.821817,"Nanchang",7],[0.400347,0.814717,"Pingdingshan",7],[0.412578,0.834936,"Shaoxing",7],[0.409612,0.816532,"Xiaogan",7],[0.399588,0.828527,"Suqian",7],[0.397731,0.804068,"Weinan",7],[0.433977,0.817808,"Huizhou",7],[0.404791,0.831688,"Yangzhou",7],[0.435583,0.8141,"Jiangmen",7],[0.386656,0.821299,"Hengshui",7],[0.406949,0.823651,"Lu'an",7],[0.417173,0.812083,"Yiyang",7],[0.399315,0.816174,"Xuchang",7],[0.419761,0.803292,"Tongren",7],[0.416165,0.792885,"Luzhou",7],[0.419081,0.823203,"Fuzhou",7],[0.433977,0.804429,"Guigang",7],[0.41946,0.814245,"Zhuzhou",7],[0.429807,0.801757,"Hechi",7],[0.4051,0.82865,"Chuzhou",7],[0.434171,0.81239,"Zhaoqing",7],[0.437435,0.801724,"Qinzhou",7],[0.394587,0.88788,"Yokohama",7],[0.410169,0.83542,"Jiaxing",7],[0.408948,0.789973,"Deyang",7],[0.411099,0.796191,"Guang'an",7],[0.40798,0.703034,"Faisalabad",7],[0.427211,0.730577,"Varanasi",7],[0.404165,0.825036,"Huainan",7],[0.434958,0.820473,"Shanwei",7],[0.40923,0.811649,"Jingmen",7],[0.423315,0.791189,"Liupanshui",7],[0.410948,0.793263,"Suining",7],[0.423736,0.723116,"Kanpur",7],[0.409542,0.829872,"Xuancheng",7],[0.414679,0.791045,"Zigong",7],[0.411925,0.819537,"Huangshi",7],[0.436189,0.798225,"Chongzuo City",7],[0.399907,0.805383,"Shangluo",7],[0.412178,0.790688,"Ziyang",7],[0.4716,0.31111,"Valencia",7],[0.396884,0.808863,"Sanmenxia",7],[0.394427,0.81346,"Jincheng",7],[0.407103,0.814937,"Suizhou",7],[0.407118,0.82918,"Ma'anshan",7],[0.396738,0.825883,"Zaozhuang",7],[0.41585,0.83015,"Quzhou",7],[0.387718,0.829636,"Dongying",7],[0.50463,0.581182,"Goma",7],[0.48876,0.526962,"Douala",7],[0.399614,0.824425,"Huaibei",7],[0.397385,0.812355,"Luoyang",7],[0.364174,0.851594,"Jilin City",7],[0.434349,0.833847,"Tainan",7],[0.387618,0.83734,"Yantai",7],[0.40867,0.798508,"Dazhou",7],[0.444902,0.303636,"Santiago de los Caballeros",7],[0.389932,0.596194,"Mersin",7],[0.4395,0.806541,"Zhanjiang",7],[0.414904,0.82548,"Jingdezhen",7],[0.393544,0.817476,"Hebi",7],[0.446099,0.227227,"Puebla City",7],[0.399974,0.821592,"Bozhou",7],[0.439061,0.61063,"Mecca",7],[0.389016,0.818055,"Xingtai",7],[0.391482,0.853847,"Daejeon",7],[0.415393,0.806873,"Zhangjiajie",7],[0.396026,0.877099,"Kyoto",7],[0.412533,0.786223,"Ya'an",7],[0.391058,0.784468,"Haidong",7],[0.383171,0.598576,"Kayseri",7],[0.386233,0.815483,"Yangquan",7],[0.409521,0.827236,"Tongling",7],[0.519203,0.811292,"Tuban",7],[0.436414,0.696675,"Rajkot",7],[0.414623,0.81423,"Yueyang",7],[0.391156,0.822123,"Liaocheng",7],[0.444989,0.702277,"Vasai-Virar",7],[0.43833,0.808114,"Maoming",7],[0.388313,0.852858,"Suwon",7],[0.443643,0.709275,"Chhatrapati Sambhajinagar",7],[0.394263,0.8592,"Ulsan",7],[0.411491,0.81176,"Jingzhou",7],[0.380277,0.824146,"Langfang",7],[0.392334,0.817601,"Anyang",7],[0.42615,0.221347,"Monterrey",7],[0.42238,0.812685,"Hengyang",7],[0.418064,0.825096,"Yingtan",7],[0.413515,0.798309,"Fuling",7],[0.433204,0.737014,"Ranchi",7],[0.519512,0.816277,"Sumenep",7],[0.410214,0.713277,"Chandigarh",7],[0.485779,0.520459,"Aba",7],[0.402761,0.816712,"Zhumadian",7],[0.383118,0.848365,"Nampo",7],[0.39986,0.863541,"Kitakyushu",7],[0.440735,0.796319,"Hải Phòng",7],[0.408272,0.709936,"Jalandhar",7],[0.423811,0.639178,"Dammam",7],[0.418312,0.712824,"Rewari",7],[0.472313,0.524717,"Jos",7],[0.394493,0.623321,"Kirkuk",7],[0.476312,0.512633,"Ilorin",7],[0.436875,0.21951,"San Luis Potosí City",7],[0.399809,0.484633,"Meknes",7],[0.518364,0.796659,"Bogor",7],[0.467399,0.717106,"Salem",7],[0.373848,0.843776,"Benxi",7],[0.316424,0.495519,"Newcastle upon Tyne",7],[0.603633,0.339017,"La Plata",7],[0.424375,0.794288,"Anshun",7],[0.375839,0.835668,"Huludao",7],[0.487212,0.780806,"Ipoh",7],[0.476335,0.713743,"Thiruvananthapuram",7],[0.374264,0.839035,"Panjin",7],[0.478151,0.510921,"Oyo",7],[0.56719,0.368171,"Sorocaba",7],[0.482045,0.520833,"Enugu",7],[0.397001,0.601991,"Homs",7],[0.396169,0.884397,"Shizuoka",7],[0.395642,0.602082,"Hama",7],[0.391399,0.510835,"Bouira",7],[0.323361,0.637243,"Tolyatti",7],[0.492433,0.783167,"Seremban",7],[0.39151,0.619803,"Mosul",7],[0.478573,0.486028,"Bouaké",7],[0.459781,0.835936,"Dasmariñas",7],[0.404472,0.707059,"Sialkot",7],[0.521737,0.806569,"Yogyakarta",7],[0.520406,0.800611,"Tasikmalaya",7],[0.386139,0.614244,"Batman",7],[0.386572,0.606326,"Adıyaman",7],[0.549075,0.316231,"Cochabamba",7],[0.428131,0.782068,"Chuxiong",7],[0.430609,0.654848,"Al Ain",7],[0.433163,0.789532,"Wenshan",7],[0.517024,0.794866,"Serang",7],[0.586144,0.584386,"Pietermaritzburg",7],[0.33378,0.518823,"Dusseldorf",7],[0.409676,0.838672,"Nanhuixincheng",7],[0.446795,0.302145,"San Juan de la Maguana",7],[0.383339,0.608952,"Elazığ",7],[0.380674,0.583294,"Kütahya",7],[0.447907,0.308407,"La Romana",7],[0.470171,0.841532,"Bacolod",7],[0.391946,0.826861,"Laiwu",7],[0.573805,0.575671,"Rustenburg",7],[0.396723,0.874126,"Himeji",7],[0.424349,0.798651,"Duyun",7],[0.388975,0.600697,"Osmaniye",7],[0.392621,0.859286,"Pohang-si",7],[0.400006,0.868793,"Matsuyama",7],[0.425531,0.229149,"Matamoros",7],[0.405802,0.701882,"Sargodha",7],[0.39425,0.79628,"Pingliang",7],[0.40373,0.707939,"Jammu",7],[0.479155,0.512668,"Ife",7],[0.456836,0.708717,"Hubli",7],[0.467156,0.719344,"Kallakurichi",7],[0.42032,0.689473,"Larkana",7],[0.470767,0.29652,"Valledupar",7],[0.389256,0.853091,"Pyeongtaek",7],[0.311625,0.491143,"Edinburgh",7],[0.559128,0.362832,"Rio Preto",7],[0.486611,0.289737,"Pereira",7],[0.518979,0.604637,"Morogoro",7],[0.441629,0.707013,"Malegaon",7],[0.400241,0.17169,"Long Beach",7],[0.375722,0.700974,"Andijon",7],[0.36788,0.847604,"Liaoyuan",7],[0.457449,0.834965,"Angeles",7],[0.538249,0.590683,"Chipata",7],[0.428833,0.836024,"Hsinchu",7],[0.441278,0.218466,"Irapuato",7],[0.411529,0.716788,"Dehradun",7],[0.372239,0.849817,"Tonghua",7],[0.478762,0.514508,"Ado Ekiti",7],[0.486004,0.522013,"Uyo",7],[0.556213,0.596783,"Beira",7],[0.393439,0.281558,"Raleigh",7],[0.398581,0.48175,"Kenitra",7],[0.409441,0.586579,"El Mahalla El Kubra",7],[0.398318,0.872351,"Takamatsu",7],[0.441172,0.713896,"Akola",7],[0.384419,0.594519,"Aksaray",7],[0.392275,0.856512,"Gumi-si",7],[0.568504,0.371309,"Santos",7],[0.395036,0.63055,"Sanandaj",7],[0.566963,0.355727,"Maringá",7],[0.403626,0.860773,"Nagasaki",7],[0.432929,0.75328,"Cumilla",7],[0.445639,0.232949,"Veracruz City",7],[0.405814,0.596616,"Tel Aviv",7],[0.394659,0.879897,"Gifu",7],[0.523934,0.822519,"Mataram",7],[0.484727,0.519539,"Owerri",7],[0.406396,0.865057,"Miyazaki",7],[0.494868,0.78593,"Batu Pahat",7],[0.4287,0.748258,"Bogura",7],[0.460911,0.70993,"Shivamogga",7],[0.451107,0.713426,"Kalaburagi",7],[0.431806,0.753562,"Agartala",7],[0.412472,0.696223,"Dera Ghazi Khan",7],[0.545998,0.364021,"Anápolis",7],[0.373032,0.840912,"Liaozhong",7],[0.396264,0.88128,"Okazaki",7],[0.406998,0.832174,"Jintan",7],[0.385862,0.803579,"Hengshan",7],[0.51992,0.810787,"Bojonegoro",7],[0.398326,0.827797,"Pizhou",7],[0.471096,0.797435,"Vũng Tàu",7],[0.462323,0.453681,"Serrekunda",7],[0.523089,0.400077,"Caruaru",7],[0.376408,0.637971,"Sumgayit",7],[0.440618,0.707703,"Dhule",7],[0.470811,0.321784,"Cumana",7],[0.416081,0.712723,"Rohtak",7],[0.39045,0.883874,"Nagano",7],[0.399535,0.704927,"Bagh",7],[0.375517,0.586554,"Düzce",7],[0.367673,0.850147,"Panshi",7],[0.391578,0.88612,"Takasaki",7],[0.489191,0.285906,"Buenaventura",7],[0.391986,0.600455,"Antakya",7],[0.487091,0.522018,"Eket",7],[0.398681,0.875495,"Wakayama",7],[0.383323,0.58168,"Uşak",7],[0.572032,0.360666,"Ponta Grossa",7],[0.420723,0.781975,"Yanjing",7],[0.415007,0.754918,"Lhoka",7],[0.384308,0.616968,"Bitlis",7],[0.379155,0.593072,"Kırıkkale",7],[0.39316,0.887905,"Saitama",8],[0.33264,0.491169,"Cardiff",7],[0.400271,0.832769,"Funing",7],[0.459356,0.718949,"Kadapa",7],[0.446457,0.224349,"Cuernavaca",7],[0.369324,0.842813,"Faku",7],[0.395486,0.855856,"Jinju-si",7],[0.359913,0.594729,"Simferopol",7],[0.495379,0.781797,"Dumai",7],[0.388038,0.855333,"Wonju",7],[0.435213,0.75103,"Barishal",7],[0.475042,0.848714,"Butuan",7],[0.474309,0.534667,"Yola",7],[0.376102,0.628777,"Ganja",7],[0.404868,0.834916,"Rugao",7],[0.597281,0.301245,"Viña del Mar",7],[0.366141,0.848044,"Yitong",7],[0.391065,0.507854,"Blida",7],[0.33594,0.519724,"Bonn",7],[0.364174,0.279618,"Markham",7],[0.387818,0.889815,"Koriyama",7],[0.401627,0.621632,"Fallujah",7],[0.453546,0.77119,"Mawlamyine",7],[0.479881,0.84513,"Cotabato City",7],[0.428223,0.744833,"Malda",7],[0.444915,0.298088,"Gonaïves",7],[0.385565,0.265286,"Lexington",7],[0.399527,0.17396,"Riverside",7],[0.38774,0.812624,"Taigu",7],[0.458448,0.452984,"Thiès",7],[0.518692,0.801558,"Cirebon",7],[0.463605,0.521113,"Katsina",7],[0.507978,0.589539,"Geita",7],[0.365486,0.843057,"Shuangliao",7],[0.452698,0.763148,"Pathein",7],[0.401944,0.823793,"Mengcheng",7],[0.406057,0.832226,"Danyang City",7],[0.330484,0.521181,"Münster",7],[0.403284,0.834201,"Dongtai",7],[0.393598,0.810299,"Yicheng",7],[0.412773,0.71707,"Haridwar",7],[0.517235,0.601131,"Kongwa",7],[0.385828,0.851535,"Kaesong",7],[0.368696,0.848697,"Dongfeng",7],[0.358429,0.841064,"Taonan",7],[0.425914,0.747893,"Rangpur",7],[0.327424,0.496852,"Leicester",7],[0.385878,0.163081,"Stockton",7],[0.37721,0.69942,"Fergana",7],[0.434805,0.746286,"Habra",7],[0.401739,0.862522,"Kurume",7],[0.346077,0.530272,"Augsburg",7],[0.53557,0.393539,"Camaçari",7],[0.502846,0.27926,"Quevedo",7],[0.396674,0.702948,"Allai",7],[0.407317,0.837202,"Chongming",7],[0.445008,0.216521,"Uruapan",7],[0.470965,0.301552,"Cabimas",7],[0.442936,0.225718,"Pachuca",7],[0.410781,0.636666,"Bandar-e Mahshahr",7],[0.479255,0.849471,"Tagum",7],[0.353187,0.590596,"Kherson",7],[0.495397,0.787794,"Kulai",7],[0.367356,0.624117,"Vladikavkaz",7],[0.520691,0.803447,"Purwokerto",7],[0.401784,0.623298,"Baghdad",8],[0.465374,0.495758,"Ouagadougou",8],[0.427364,0.643129,"Doha",8],[0.399817,0.598551,"Beirut",8],[0.328625,0.51359,"Amsterdam",8],[0.449241,0.286687,"Kingston",8],[0.414559,0.633259,"Kuwait City",8],[0.467573,0.619854,"Djibouti",8],[0.523849,0.848829,"Dili",8],[0.575845,0.586513,"Mbabane",8],[0.434261,0.81596,"Dongguan",8],[0.411109,0.819076,"Huanggang",8],[0.433246,0.824104,"Shantou",8],[0.406708,0.833248,"Changzhou",8],[0.396788,0.817631,"Kaifeng",8],[0.404589,0.833106,"Taizhou",8],[0.429831,0.828015,"Xiamen City",8],[0.386831,0.813162,"Jinzhong",8],[0.434904,0.81469,"Shunde",8],[0.405473,0.831722,"Zhenjiang",8],[0.387639,0.851959,"Incheon",8],[0.430797,0.835133,"Taichung",8],[0.434572,0.811221,"Yunfu",8],[0.375788,0.583169,"Kocaeli",8],[0.382126,0.826913,"Binhai New Area",8],[0.41194,0.698533,"Multan",8],[0.419995,0.816342,"Pingxiang",8],[0.517599,0.796413,"South Tangerang",8],[0.468635,0.717133,"Namakkal",8],[0.393295,0.64164,"Karaj",8],[0.436509,0.815478,"Zhuhai",8],[0.444463,0.224865,"Ecatepec",8],[0.397136,0.87554,"Kobe",8],[0.400902,0.816747,"Luohe",8],[0.47141,0.312253,"Maracay",8],[0.38356,0.576204,"Manisa",8],[0.403734,0.174548,"San Diego",8],[0.410428,0.82635,"Chizhou",8],[0.488443,0.525643,"Buea",8],[0.371705,0.844234,"Fushun",8],[0.445524,0.703137,"Kalyan-Dombivli",8],[0.414783,0.833529,"Yiwu",8],[0.353051,0.864259,"Shuangyashan",8],[0.382007,0.821965,"Xiong'an",8],[0.496936,0.788995,"Batam City",8],[0.419489,0.819201,"Xinyu",8],[0.407289,0.707982,"Amritsar",8],[0.412616,0.839453,"Zhoushan",8],[0.482894,0.518894,"Onitsha",8],[0.395324,0.85745,"Changwon",8],[0.491677,0.782749,"Kajang",8],[0.394022,0.889217,"Chiba",8],[0.387765,0.853128,"Seongnam",8],[0.43822,0.800997,"Fangchenggang",8],[0.480074,0.509296,"Abeokuta",8],[0.417463,0.713972,"Gurugram",8],[0.495823,0.788193,"Johor Bahru",8],[0.522231,0.812872,"Malang",8],[0.397691,0.876393,"Sakai",8],[0.56782,0.370693,"São Bernardo do Campo",8],[0.373914,0.842138,"Liaoyang",8],[0.519942,0.81523,"Pamekasan",8],[0.564951,0.379303,"Nova Iguaçu",8],[0.482275,0.506737,"Cotonou",8],[0.394188,0.8881,"Ota",8],[0.403616,0.229631,"Fort Worth",8],[0.394173,0.886767,"Sagamihara",8],[0.412691,0.715397,"Saharanpur",8],[0.375379,0.581208,"Pendik",8],[0.509349,0.581576,"Bujumbura",8],[0.389873,0.853095,"Cheonan-si",8],[0.36483,0.278445,"Brampton",8],[0.458394,0.836243,"SJDM",8],[0.406141,0.624788,"Ad Diwaniyah",8],[0.454123,0.723484,"Guntur",8],[0.413056,0.587037,"Helwan",8],[0.332495,0.520737,"Dortmund",8],[0.459403,0.835999,"Bacoor",8],[0.40407,0.622319,"Karbala",8],[0.477417,0.323481,"Ciudad Bolivar",8],[0.488505,0.2955,"Villavicencio",8],[0.484298,0.77913,"Sungai Petani",8],[0.481573,0.509734,"Ikorodu",8],[0.547416,0.363208,"Aparecida de Goiânia",8],[0.329954,0.511976,"The Hague",8],[0.390773,0.888564,"Utsunomiya",8],[0.535226,0.537233,"Benguela",8],[0.521087,0.807857,"Surakarta",8],[0.323526,0.493764,"Manchester",8],[0.452504,0.707208,"Sangli",8],[0.418268,0.733309,"Pokhara",8],[0.468598,0.293903,"Santa Marta",8],[0.432244,0.741596,"Asansol",8],[0.407398,0.827387,"Chaohu",8],[0.407047,0.705518,"Sheikhupura",8],[0.557695,0.388078,"Vila Velha",8],[0.574905,0.578337,"Tembisa",8],[0.38665,0.852872,"Uijeongbu",8],[0.397836,0.870451,"Fukuyama",8],[0.470124,0.840482,"Iloilo City",8],[0.536337,0.579546,"Ndola",8],[0.425755,0.221327,"General Escobedo",8],[0.394234,0.642311,"Eslamshahr",8],[0.37523,0.606624,"Giresun",8],[0.566247,0.369765,"Jundiaí",8],[0.468967,0.714848,"Tiruppur",8],[0.448417,0.305095,"Sabana Grande de Palenque",8],[0.410053,0.586106,"Tanta",8],[0.395582,0.881393,"Toyota",8],[0.436007,0.745624,"Rajpur Sonarpur",8],[0.564849,0.367641,"Piracicaba",8],[0.39314,0.888821,"Kashiwa",8],[0.390286,0.881149,"Toyama",8],[0.520122,0.400341,"Campina Grande",8],[0.556625,0.377227,"Betim",8],[0.431572,0.751106,"Tongi",8],[0.396714,0.876831,"Hirakata",8],[0.600701,0.551717,"Mitchells Plain",8],[0.382711,0.836824,"Lüshunkou",8],[0.412446,0.836528,"Yuyao",8],[0.382434,0.82203,"Anxin",8],[0.386931,0.852311,"Goyang",9],[0.404225,0.705754,"Gujrat",8],[0.429012,0.751139,"Mymensingh",8],[0.39517,0.887959,"Yokosuka",8],[0.417981,0.827026,"Yanshan",8],[0.435242,0.745576,"Panihati",8],[0.395062,0.880019,"Ichinomiya",8],[0.393827,0.641608,"Malard",8],[0.441736,0.219961,"Celaya",8],[0.390326,0.829094,"Qingzhou",8],[0.411814,0.832554,"Lin'an District",8],[0.363572,0.7424,"Changji/Sanji",8],[0.48615,0.523159,"Calabar",8],[0.459582,0.593142,"Wad Madanī",8],[0.400389,0.829717,"Siyang",8],[0.395617,0.808929,"Xia",8],[0.397166,0.877236,"Nara",8],[0.333609,0.519939,"Wuppertal",8],[0.398818,0.700125,"Mardan",8],[0.409969,0.704026,"Okara",8],[0.445398,0.225162,"Xico",8],[0.486279,0.51743,"Yenagoa",8],[0.391033,0.853581,"Sejong",8],[0.391553,0.785572,"Minhe",8],[0.587173,0.357833,"Canoas",8],[0.38952,0.596931,"Tarsus",8],[0.405026,0.830046,"Luhe",8],[0.374305,0.580715,"Sarıyer",8],[0.477065,0.845114,"Iligan",8],[0.467948,0.717182,"Rasipuram",8],[0.407235,0.830628,"Lishui",8],[0.328465,0.495804,"Coventry",8],[0.461417,0.836274,"Batangas City",8],[0.556032,0.377535,"Ribeirão das Neves",8],[0.40352,0.824497,"Panji",8],[0.418341,0.836333,"Nanyue",8],[0.322574,0.495842,"Wakefield",8],[0.550885,0.586313,"Chitungwiza",8],[0.519269,0.797018,"Sukabumi",8],[0.394158,0.485071,"Tétouan",8],[0.403595,0.535377,"Al Zawiyah",8],[0.313344,0.536112,"Malmo",8],[0.429007,0.749537,"Sarishabari",8],[0.40266,0.82016,"Linquan",8],[0.494325,0.784905,"Muar",8],[0.289259,0.568491,"Espoo",8],[0.487386,0.289799,"Armenia",8],[0.565772,0.373441,"Taubaté",8],[0.392582,0.180604,"Henderson",8],[0.425851,0.742981,"Purnia",8],[0.398227,0.828747,"Xinyi",8],[0.396217,0.879513,"Yokkaichi",8],[0.445456,0.713255,"Parbhani",8],[0.392864,0.852661,"Iksan-si",8],[0.392053,0.824348,"Feicheng",8],[0.482691,0.51966,"Awka",8],[0.373529,0.840075,"Taian",8],[0.393751,0.791823,"Huining",8],[0.484111,0.518915,"Oguta",8],[0.416206,0.836501,"Linhai",8],[0.329905,0.514227,"Utrecht",8],[0.496417,0.788478,"Singapore",9],[0.50542,0.583504,"Kigali",9],[0.461579,0.252246,"San Salvador",9],[0.466814,0.456714,"Bissau",9],[0.395505,0.592677,"Nicosia",9],[0.355562,0.540297,"Ljubljana",9],[0.368722,0.558789,"Pristina",9],[0.424472,0.640506,"Manama",9],[0.509529,0.583125,"Gitega",9],[0.5572,0.65973,"Port Louis",9],[0.463296,0.334393,"Bridgetown",9],[0.43425,0.814211,"Foshan",9],[0.43577,0.814964,"Zhongshan",9],[0.419453,0.813719,"Xiangtan",9],[0.412617,0.586699,"Giza",9],[0.432336,0.823946,"Chaozhou",9],[0.428406,0.686147,"Orangi",9],[0.455993,0.590216,"Omdurman",9],[0.517354,0.797207,"Bekasi",9],[0.517189,0.796217,"Tangerang",9],[0.428262,0.836947,"Taoyuan",9],[0.400834,0.702926,"Rawalpindi",9],[0.517835,0.796711,"Depok",9],[0.447319,0.705003,"Pimpri-Chinchwad",9],[0.41681,0.715033,"Ghaziabad",9],[0.411977,0.834055,"Xiaoshan District",9],[0.484879,0.488808,"Abobo",9],[0.427179,0.653947,"Sharjah",9],[0.398353,0.80198,"Xianyang",9],[0.567091,0.370756,"Guarulhos",9],[0.411314,0.819139,"Ezhou",9],[0.412162,0.586784,"Shubra al Khayma",9],[0.45477,0.800589,"Đà Nẵng",9],[0.388392,0.853274,"Yongin",9],[0.417454,0.828291,"Guangfeng",9],[0.406762,0.825848,"Baohe",9],[0.49152,0.782173,"Subang Jaya",9],[0.56514,0.38047,"São Gonçalo",9],[0.459035,0.8366,"Antipolo",9],[0.481637,0.50928,"Ikeja",9],[0.390472,0.854137,"Cheongju-si",9],[0.3748,0.579667,"Esenyurt",9],[0.52004,0.814586,"Sampang",9],[0.490957,0.782372,"Selayang",9],[0.393548,0.887885,"Nerima",9],[0.403959,0.825033,"Tianjia‘an",9],[0.419128,0.835578,"Longwan",9],[0.387009,0.853379,"Namyangju",9],[0.365199,0.278766,"Mississauga",9],[0.458735,0.836026,"Valenzuela",9],[0.388535,0.852309,"Hwaseong",9],[0.393427,0.88832,"Adachi",9],[0.388109,0.852308,"Ansan-si",9],[0.470388,0.313849,"Catia La Mar",9],[0.482035,0.50654,"Abomey-Calavi",9],[0.522786,0.402925,"Jaboatão dos Guararapes",9],[0.393714,0.888857,"Funabashi",9],[0.43676,0.815383,"Macau",9],[0.459197,0.248344,"Villa Nueva",9],[0.433984,0.81418,"Dali",9],[0.469496,0.292272,"Soledad",9],[0.411543,0.833713,"Gongshu District",9],[0.342611,0.158752,"Surrey",9],[0.39385,0.886897,"Hachioji",9],[0.482367,0.290116,"Bello",9],[0.395313,0.85803,"Gimhae",9],[0.312385,0.605382,"Balashikha",9],[0.401422,0.189357,"Mesa",9],[0.57281,0.340252,"San Lorenzo",9],[0.332848,0.518777,"Duisburg",9],[0.503817,0.365551,"Ananindeua",9],[0.397501,0.871589,"Kurashiki",9],[0.397252,0.812193,"Jianxi District",10],[0.602898,0.337791,"Lanús",9],[0.460128,0.836543,"Calamba",9],[0.375,0.579782,"Avcılar",9],[0.56726,0.371687,"Mogi das Cruzes",9],[0.435811,0.745139,"Maheshtala",9],[0.374627,0.580481,"Kâğıthane",9],[0.394858,0.887403,"Fujisawa",9],[0.394178,0.887341,"Machida",9],[0.386574,0.852167,"Paju",9],[0.398499,0.871662,"Marugame",9],[0.357452,0.29513,"Laval",9],[0.40923,0.587185,"El Mansura",9],[0.408916,0.837013,"Jiuting",9],[0.387905,0.852231,"Siheung",9],[0.396822,0.876316,"Toyonaka",9],[0.405874,0.600246,"Zarqa",9],[0.414661,0.632423,"Al Jahra",9],[0.389067,0.598006,"Çukurova",9],[0.567287,0.370023,"Osasco",10],[0.444242,0.224978,"Ojo de Agua",9],[0.379518,0.208803,"Aurora",9],[0.41243,0.586055,"Ash Sheikh Zayed",9],[0.400235,0.702089,"Wah Cantonment",9],[0.374961,0.581191,"Sancaktepe",9],[0.516746,0.794594,"Cilegon",9],[0.39688,0.881643,"Toyohashi",9],[0.407583,0.790437,"Anzhou",9],[0.427837,0.83818,"Keelung",9],[0.33264,0.520055,"Bochum",9],[0.411316,0.632508,"Az Zubayr",9],[0.406492,0.834865,"Zhangjiagang",9],[0.403674,0.230258,"Arlington",9],[0.363713,0.726457,"Yining",9],[0.380728,0.711252,"Shule",9],[0.416478,0.792689,"Naxi",9],[0.457768,0.835261,"San Fernando",9],[0.3965,0.87667,"Takatsuki",9],[0.557498,0.387732,"Cariacica",9],[0.418557,0.836054,"Yueqing",9],[0.392943,0.88746,"Kawagoe",9],[0.400022,0.172467,"Anaheim",9],[0.544506,0.366376,"Ceilândia",9],[0.40635,0.834114,"Jiangyin",9],[0.568734,0.371071,"Praia Grande",9],[0.52211,0.403143,"Paulista",9],[0.452055,0.727168,"Rajamahendravaram",9],[0.364772,0.52019,"Nice",9],[0.458475,0.451913,"Keur Massar",9],[0.39496,0.858436,"Yangsan",9],[0.400307,0.172574,"Santa Ana",9],[0.575134,0.577708,"Randburg",9],[0.573399,0.363313,"São José dos Pinhais",9],[0.387348,0.853375,"Hanam",9],[0.391346,0.886287,"Maebashi",9],[0.492217,0.782526,"Sepang",9],[0.344325,0.624311,"Volzhskiy",9],[0.414837,0.833992,"Dongyang",9],[0.400486,0.479474,"Mohammedia",9],[0.485072,0.779313,"Kulim",9],[0.393644,0.641972,"Qods",9],[0.405314,0.832756,"Yangzhong",9],[0.498888,0.590664,"Kira",9],[0.459386,0.836645,"Binangonan",9],[0.379404,0.773024,"Jiayuguan",9],[0.375897,0.293966,"Newark",9],[0.426254,0.22197,"Benito Juárez",9],[0.364413,0.279092,"Vaughan",9],[0.384226,0.606571,"Battalgazi",9],[0.456437,0.836023,"Cabanatuan",9],[0.406509,0.836603,"Haimen",9],[0.395168,0.880576,"Kasugai",9],[0.437696,0.766622,"Sagaing",9],[0.412486,0.587432,"New Cairo",9],[0.431756,0.750719,"Savar",9],[0.39717,0.874855,"Akashi",9],[0.460078,0.836039,"Silang",9],[0.322051,0.495134,"Bradford",9],[0.457201,0.834926,"Mabalacat",9],[0.511871,0.54242,"Brazzaville",10],[0.428204,0.837405,"New Taipei",10],[0.458852,0.836246,"Quezon City",10],[0.436395,0.817158,"Kowloon",10],[0.445656,0.702695,"Thane",10],[0.39677,0.815707,"Jinshui District",10],[0.394293,0.888063,"Kawasaki",10],[0.371968,0.842639,"Tiexi",10],[0.575526,0.577472,"Soweto",10],[0.441144,0.212802,"Zapopan",10],[0.408297,0.835331,"Suzhou Industrial Park",10],[0.446137,0.702833,"Navi Mumbai",10],[0.445028,0.22495,"Neza",10],[0.469736,0.796561,"Thủ Đức",10],[0.419023,0.835032,"Ouhai",10],[0.393898,0.887934,"Setagaya",10],[0.378995,0.591265,"Çankaya",10],[0.491538,0.781791,"Klang",10],[0.459208,0.836318,"Taguig",10],[0.38748,0.852128,"Bucheon",10],[0.487258,0.293834,"Soacha",10],[0.445354,0.702385,"Mira-Bhayander",10],[0.565043,0.379695,"Duque de Caxias",10],[0.444819,0.224353,"Naucalpan de Juárez",10],[0.491388,0.782348,"Petaling Jaya",10],[0.480678,0.721817,"Colombo",10],[0.374799,0.580158,"Bağcılar",10],[0.567654,0.370756,"Santo André",10],[0.447936,0.305249,"San Cristóbal",10],[0.374832,0.580823,"Ümraniye",10],[0.393788,0.888531,"Edogawa",10],[0.574734,0.590186,"Matola",10],[0.444647,0.224457,"Tlalnepantla",10],[0.36442,0.743417,"Tianshan",10],[0.410354,0.826564,"Guichi",10],[0.381654,0.825529,"Hebei",10],[0.417128,0.714798,"Noida",10],[0.426166,0.221625,"Guadalupe",10],[0.556463,0.377544,"Contagem",10],[0.374915,0.580183,"Bahçelievler",10],[0.389516,0.585319,"Kepez",10],[0.387857,0.852659,"Anyang",10],[0.495965,0.787818,"Iskandar Puteri",10],[0.39346,0.888003,"Itabashi",10],[0.519138,0.798729,"Cimahi",10],[0.41033,0.713486,"Panchkula",10],[0.459603,0.836236,"Muntinlupa",10],[0.393716,0.887879,"Suginami",10],[0.425838,0.221698,"Apodaca",10],[0.374391,0.841724,"Lishan",10],[0.384357,0.575482,"Buca",10],[0.45891,0.248316,"Mixco",10],[0.397187,0.87666,"Higashiosaka",10],[0.393613,0.88869,"Ichikawa",10],[0.375203,0.58092,"Maltepe",10],[0.44454,0.224322,"Ciudad López Mateos",10],[0.396983,0.875943,"Nishinomiya",10],[0.444305,0.224404,"Cuautitlán Izcalli",10],[0.393413,0.88862,"Matsudo",10],[0.416034,0.792873,"Longmatan",10],[0.38408,0.575609,"Bornova",10],[0.459612,0.835778,"General Trias",10],[0.485097,0.488903,"Cocody",10],[0.486296,0.495142,"Sekondi-Takoradi",10],[0.458618,0.836515,"Montalban",10],[0.441432,0.213216,"Tonalá",10],[0.377806,0.580452,"Nilüfer",10],[0.476933,0.325678,"Puerto Ordaz",10],[0.386417,0.160357,"Oakland",10],[0.37453,0.579986,"Başakşehir",10],[0.374952,0.580871,"Ataşehir",10],[0.394058,0.888164,"Shinagawa",10],[0.485377,0.489004,"Port-Bouët",10],[0.364252,0.743074,"Toutunhe",10],[0.45916,0.836096,"Pasay",10],[0.459817,0.836427,"Santa Rosa",10],[0.37177,0.84383,"Wanghua",10],[0.38708,0.851988,"Gimpo",10],[0.387733,0.853487,"Gwangju",10],[0.567115,0.371246,"Itaquaquecetuba",10],[0.458851,0.836034,"Caloocan",11],[0.471158,0.844285,"Mandaue",10],[0.510369,0.392613,"Caucaia",10],[0.459917,0.836454,"Cabuyao",10],[0.522291,0.403206,"Olinda",10],[0.347428,0.605454,"Makiivka",10],[0.579405,0.33658,"Corrientes",10],[0.384117,0.575331,"Karşıyaka",10],[0.602768,0.337881,"Avellaneda",10],[0.393062,0.888308,"Koshigaya",10],[0.447655,0.299205,"Pétion-Ville",10],[0.393374,0.887413,"Tokorozawa",10],[0.396082,0.877413,"Otsu",10],[0.374912,0.579548,"Beylikdüzü",10],[0.568604,0.37115,"São Vicente",10],[0.57532,0.577461,"Roodepoort",10],[0.38996,0.852785,"Asan-si",10],[0.495846,0.788669,"Pasir Gudang",10],[0.436768,0.21962,"Soledad de Graciano Sánchez",10],[0.567319,0.371359,"Suzano",10],[0.384685,0.606243,"Yeşilyurt",10],[0.426168,0.22094,"Santa Catarina",10],[0.42648,0.212515,"Gómez Palacio",10],[0.544011,0.344077,"Várzea Grande",10],[0.57282,0.339927,"Lambaré",10],[0.445635,0.703335,"Ambernath",10],[0.403041,0.821672,"Yingquan",10],[0.408632,0.837608,"Pudong",11],[0.485159,0.488678,"Yopougon",11],[0.406574,0.825708,"Shushan",11],[0.455983,0.590374,"Bahri",11],[0.425009,0.831302,"Cangshan",11],[0.435607,0.745348,"Howrah",11],[0.371993,0.842508,"Yuhong",11],[0.364227,0.743255,"Xinshi",11],[0.38766,0.823038,"Decheng",11],[0.406943,0.82354,"Yu‘an",11],[0.447713,0.306005,"Santo Domingo Este",11],[0.399318,0.481072,"Salé",11],[0.397808,0.804145,"Linwei",11],[0.411735,0.833682,"Xihu District",11],[0.381689,0.8254,"Nankai",11],[0.37188,0.842876,"Huanggu",11],[0.381724,0.825682,"Hedong",11],[0.406905,0.823706,"Jin‘an",11],[0.491457,0.781996,"Shah Alam",11],[0.459112,0.836323,"Pasig",11],[0.388977,0.603875,"Şehitkamil",11],[0.372018,0.842814,"Heping",11],[0.459283,0.836088,"Parañaque",11],[0.406878,0.204203,"El Paso",11],[0.427106,0.63774,"Al-Hofuf",11],[0.441386,0.213022,"Tlaquepaque",11],[0.378822,0.591412,"Mamak",11],[0.444951,0.225117,"Chimalhuacán",11],[0.472125,0.711873,"Ernakulam",11],[0.45934,0.836061,"Las Piñas",11],[0.408144,0.82885,"Jiujiang",11],[0.393345,0.888123,"Kawaguchi",11],[0.40824,0.828833,"Jinghu",11],[0.407813,0.791012,"Youxian",11],[0.417558,0.82767,"Xinzhou",11],[0.491308,0.78265,"Ampang Jaya",11],[0.374828,0.580598,"Üsküdar",11],[0.393807,0.88838,"Koto",11],[0.374603,0.841626,"Tiedong",11],[0.447593,0.298863,"Carrefour",11],[0.384321,0.575355,"Karabağlar",11],[0.374713,0.580312,"Gaziosmanpaşa",11],[0.459489,0.835935,"Imus",11],[0.381584,0.825403,"Hongqiao",11],[0.565341,0.380237,"Niterói",11],[0.397177,0.812483,"Chanhe Hui District",11],[0.392663,0.795235,"Yuanzhou",11],[0.397016,0.876147,"Amagasaki",11],[0.458903,0.836387,"Marikina",11],[0.374959,0.580626,"Kadıköy",11],[0.393537,0.888511,"Katsushika",11],[0.407068,0.829183,"Huashan",11],[0.47673,0.32598,"San Félix",11],[0.485278,0.489002,"Koumassi",11],[0.398434,0.871861,"Sakaide",11],[0.485078,0.779058,"Bukit Mertajam",11],[0.567695,0.37094,"Mauá",11],[0.374855,0.580411,"Fatih",11],[0.394371,0.813655,"Zezhou",11],[0.425917,0.221418,"San Nicolás de los Garza",11],[0.459748,0.836345,"Biñan",11],[0.428347,0.836736,"Zhongli District",11],[0.567755,0.370487,"Diadema",11],[0.383108,0.59856,"Kocasinan",11],[0.56726,0.369887,"Carapicuíba",11],[0.459082,0.836478,"Taytay",11],[0.396894,0.876437,"Suita",11],[0.385927,0.611624,"Kayapınar",11],[0.447542,0.299189,"Delmas",11],[0.372337,0.849782,"Dongchang",11],[0.393523,0.888157,"Kita",11],[0.393735,0.888066,"Shinjuku",11],[0.386564,0.580838,"Pamukkale",11],[0.393652,0.887957,"Nakano",11],[0.384086,0.575467,"Bayraklı",11],[0.459676,0.836269,"San Pedro",11],[0.375047,0.581298,"Sultanbeyli",11],[0.557667,0.387951,"Vitória",11],[0.445307,0.225322,"Ixtapaluca",11],[0.572766,0.340133,"Fernando de la Mora",11],[0.389853,0.59614,"Toroslar",11],[0.366897,0.84539,"Tiexi",11],[0.366839,0.845567,"Tiedong",11],[0.393854,0.641829,"Shahriyar",11],[0.39359,0.888095,"Toshima",11],[0.387552,0.852398,"Gwangmyeong",11],[0.407868,0.790985,"Fucheng",12],[0.389903,0.827811,"Zhāngdiàn District",12],[0.406551,0.825844,"Yaohai",12],[0.409518,0.829865,"Xuanzhou",12],[0.546494,0.31066,"El Alto",12],[0.381791,0.825603,"Hexi",12],[0.364391,0.743319,"Saybagh",12],[0.4249,0.831455,"Jin'an",12],[0.371988,0.842923,"Shenhe",12],[0.374956,0.57992,"Küçükçekmece",12],[0.371953,0.842955,"Dadong",12],[0.417499,0.82751,"Guangxin",12],[0.384751,0.804765,"Yuyang District",12],[0.4249,0.831386,"Gulou",12],[0.406484,0.82572,"Luyang",12],[0.413039,0.817481,"Xian'an District",12],[0.377889,0.580827,"Yıldırım",12],[0.459122,0.83617,"Makati",12],[0.39439,0.813465,"Chengqu",12],[0.397244,0.812283,"Xigong",12],[0.368111,0.759758,"Yizhou",12],[0.364272,0.743444,"Shuimogou",12],[0.444626,0.224346,"Atizapán de Zaragoza",12],[0.44557,0.703242,"Ulhasnagar",12],[0.471198,0.844302,"Lapu-Lapu",12],[0.564974,0.379435,"Belford Roxo",12],[0.386211,0.81267,"Yingze",12],[0.357258,0.841216,"Taobei",12],[0.371657,0.844276,"Shuncheng",12],[0.374788,0.580229,"Esenler",12],[0.565087,0.379521,"São João de Meriti",12],[0.459063,0.836205,"Mandaluyong",12],[0.37475,0.580369,"Eyüpsultan",12],[0.379428,0.584788,"Odunpazarı",12],[0.424991,0.831414,"Taijiang",12],[0.409556,0.82725,"Tongguan",12],[0.374492,0.841566,"Tiexi",12],[0.358534,0.863817,"Jiguan",12],[0.491568,0.78227,"Puchong",12],[0.388647,0.607765,"Haliliye",12],[0.388714,0.607731,"Eyyübiye",12],[0.385785,0.795023,"Litong",12],[0.375764,0.583194,"İzmit",12],[0.378821,0.591277,"Altındağ",12],[0.484955,0.778805,"Butterworth",12],[0.390847,0.789297,"Baiyin",12],[0.435284,0.745476,"Kamarhati",12],[0.476349,0.523657,"Lafia",12],[0.600668,0.551854,"Khayelitsha",12],[0.367832,0.847581,"Longshan",12],[0.39052,0.782677,"Chengxi",12],[0.567223,0.369788,"Barueri",12],[0.374833,0.580202,"Güngören",12],[0.375949,0.294313,"Jersey City",12]]}]
--------------------------------------------------------------------------------
/images/3/gray+stone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinyworldmap/tiny-world-map/c79b4df9626dd0c05c937a96dc836c8af151517d/images/3/gray+stone.png
--------------------------------------------------------------------------------
/images/3/great-lakes-bad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinyworldmap/tiny-world-map/c79b4df9626dd0c05c937a96dc836c8af151517d/images/3/great-lakes-bad.png
--------------------------------------------------------------------------------
/images/3/great-lakes-good.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinyworldmap/tiny-world-map/c79b4df9626dd0c05c937a96dc836c8af151517d/images/3/great-lakes-good.png
--------------------------------------------------------------------------------
/images/3/greenland.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinyworldmap/tiny-world-map/c79b4df9626dd0c05c937a96dc836c8af151517d/images/3/greenland.png
--------------------------------------------------------------------------------
/images/3/nl-bad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinyworldmap/tiny-world-map/c79b4df9626dd0c05c937a96dc836c8af151517d/images/3/nl-bad.png
--------------------------------------------------------------------------------
/images/3/nl-nice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinyworldmap/tiny-world-map/c79b4df9626dd0c05c937a96dc836c8af151517d/images/3/nl-nice.png
--------------------------------------------------------------------------------
/images/3/nl-nice2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinyworldmap/tiny-world-map/c79b4df9626dd0c05c937a96dc836c8af151517d/images/3/nl-nice2.png
--------------------------------------------------------------------------------
/images/3/philippines-bad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinyworldmap/tiny-world-map/c79b4df9626dd0c05c937a96dc836c8af151517d/images/3/philippines-bad.png
--------------------------------------------------------------------------------
/images/3/philippines-good.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinyworldmap/tiny-world-map/c79b4df9626dd0c05c937a96dc836c8af151517d/images/3/philippines-good.png
--------------------------------------------------------------------------------
/images/3/sea+water.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinyworldmap/tiny-world-map/c79b4df9626dd0c05c937a96dc836c8af151517d/images/3/sea+water.png
--------------------------------------------------------------------------------
/images/3/uk-bad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinyworldmap/tiny-world-map/c79b4df9626dd0c05c937a96dc836c8af151517d/images/3/uk-bad.png
--------------------------------------------------------------------------------
/images/3/uk-good.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinyworldmap/tiny-world-map/c79b4df9626dd0c05c937a96dc836c8af151517d/images/3/uk-good.png
--------------------------------------------------------------------------------
/images/maximalism.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinyworldmap/tiny-world-map/c79b4df9626dd0c05c937a96dc836c8af151517d/images/maximalism.png
--------------------------------------------------------------------------------
/images/noborders.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinyworldmap/tiny-world-map/c79b4df9626dd0c05c937a96dc836c8af151517d/images/noborders.png
--------------------------------------------------------------------------------
/images/roads.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinyworldmap/tiny-world-map/c79b4df9626dd0c05c937a96dc836c8af151517d/images/roads.png
--------------------------------------------------------------------------------
/images/styling.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinyworldmap/tiny-world-map/c79b4df9626dd0c05c937a96dc836c8af151517d/images/styling.png
--------------------------------------------------------------------------------
/images/v3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinyworldmap/tiny-world-map/c79b4df9626dd0c05c937a96dc836c8af151517d/images/v3.png
--------------------------------------------------------------------------------
/images/zoomed-in-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinyworldmap/tiny-world-map/c79b4df9626dd0c05c937a96dc836c8af151517d/images/zoomed-in-2.png
--------------------------------------------------------------------------------
/images/zoomed-in-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinyworldmap/tiny-world-map/c79b4df9626dd0c05c937a96dc836c8af151517d/images/zoomed-in-3.png
--------------------------------------------------------------------------------
/images/zoomed-in-la-coast.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinyworldmap/tiny-world-map/c79b4df9626dd0c05c937a96dc836c8af151517d/images/zoomed-in-la-coast.png
--------------------------------------------------------------------------------
/images/zoomed-in.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinyworldmap/tiny-world-map/c79b4df9626dd0c05c937a96dc836c8af151517d/images/zoomed-in.png
--------------------------------------------------------------------------------
/images/zoomed-mid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinyworldmap/tiny-world-map/c79b4df9626dd0c05c937a96dc836c8af151517d/images/zoomed-mid.png
--------------------------------------------------------------------------------
/images/zoomed-out.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinyworldmap/tiny-world-map/c79b4df9626dd0c05c937a96dc836c8af151517d/images/zoomed-out.png
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Tiny world map - a Leaflet map for offline and low-bandwidth web apps
5 |
6 |
7 |
8 |
9 |
10 |
11 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
31 |
41 |
42 |
43 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 | tinyworldmap is an ODBL-licensed map for offline-first and low-bandwidth web apps. You're free to use it .
123 |
124 |
125 | If your organization requires a custom map, such as a city map, a road map, or a map in another language, please contact us for a quote.
126 |
127 |
128 |
148 |
159 |
160 |
--------------------------------------------------------------------------------
/service-worker.js:
--------------------------------------------------------------------------------
1 | // Choose a cache name
2 | const cacheName = 'sw-v1';
3 | // IMPORTANT: List the files to precache
4 | const TWM = 'https://tinyworldmap.com/dist/v3/tiny-world-all-10000.json';
5 | const precacheResources = ['/', TWM];
6 | // IMPORTANT: Alter the regex and tile size if you use non-standard tiles
7 | const REGEXP = /tile\.openstreetmap\.org\/(?\d+)\/(?\d+)\/(?\d+)/
8 | const TILESIZE = 256
9 |
10 | const drawOptions = {} // see README
11 |
12 | // When the service worker is installing, open the cache and add the precache resources to it
13 | self.addEventListener('install', (event) => {
14 | console.log('Service worker install event!');
15 | event.waitUntil(caches.open(cacheName).then((cache) => cache.addAll(precacheResources)));
16 | });
17 |
18 | function drawPlaces(tile, coords, twm, opts) {
19 | var ctx = tile.getContext('2d', {alpha: false});
20 |
21 | ctx.textAlign = 'center'
22 | ctx.lineJoin = 'round'
23 |
24 | // let sortedPlaces = twm.data.sort((a, b) => (b.zIndex || 0) - (a.zIndex || 0))
25 |
26 | let vwidth = 800, vheight = 800
27 |
28 | var size = {x: tile.width, y: tile.height};
29 | let margin1 = 2/size.x, margin2 = 35/size.x, margin3 = 50/size.x, N = Math.pow(2, coords.z);
30 |
31 | let lbound = coords.x / N, rbound = lbound + 1/N, tbound = coords.y / N, bbound = tbound + 1/N
32 |
33 | let transformed = false;
34 |
35 | let restoreStyle = {}, specialOptions = {}
36 |
37 | let matrix = new DOMMatrix()
38 |
39 | matrix.translateSelf(-size.x*coords.x, -size.x*coords.y)
40 | matrix.scaleSelf(size.x*N/vwidth,size.y*N/vheight)
41 |
42 | let applyStyle = (ctx, p) => {
43 | let render = twm.render[p.id] || {}
44 |
45 | let newRestoreStyle = {}
46 |
47 | for (let k in render.style || {}) {
48 | newRestoreStyle[k] = ctx[k]
49 | delete restoreStyle[k]
50 | ctx[k] = typeof render.style[k] == 'function' ? render.style[k](ctx, coords) : render.style[k]
51 | }
52 |
53 | for (let k in restoreStyle) {
54 | ctx[k] = restoreStyle[k]
55 | }
56 |
57 | restoreStyle = newRestoreStyle
58 | specialOptions = render.options || {}
59 | }
60 |
61 | for (let set of twm.data) {
62 | applyStyle(ctx, set)
63 |
64 | if(coords.z > (specialOptions.maxZoom || 99999) || coords.z < (specialOptions.minZoom || 0))
65 | continue
66 |
67 | if (specialOptions.lineDash) ctx.setLineDash(specialOptions.lineDash)
68 |
69 | if (set.type == 'fill') {
70 | // if (transformed) ctx.resetTransform()
71 | ctx.fillRect(0, 0, size.x, size.y)
72 | }
73 | else if (set.type == 'path') {
74 | if (!set._path2ds) {
75 | set._path2ds = set.paths.map(place => [new Path2D(place[0]), place[1]])
76 | }
77 |
78 | // if (!transformed) {
79 | // ctx.translate(-size.x*coords.x, -size.x*coords.y)
80 | // ctx.scale(size.x*N/vwidth,size.y*N/vheight)
81 | // }
82 |
83 | let pathsToDraw = new Path2D()
84 |
85 | for (let [p, bounds] of set._path2ds) {
86 | if (!(bounds[0] > rbound || bounds[2] < lbound || bounds[1] > bbound || bounds[3] < tbound)) {
87 | pathsToDraw.addPath(p, matrix)
88 | }
89 | }
90 |
91 | if (specialOptions.fill !== false)
92 | ctx.fill(pathsToDraw)
93 |
94 | if (specialOptions.stroke !== false)
95 | ctx.stroke(pathsToDraw)
96 | }
97 | else if (set.type == 'label') {
98 | // if (transformed) ctx.resetTransform()
99 |
100 | let maxWidth = specialOptions.maxWidth
101 |
102 | if (specialOptions.dotColor) {
103 | let restoreFill = ctx.fillStyle
104 | ctx.fillStyle = specialOptions.dotColor
105 |
106 | for (let [yc, xc, name, zoom] of set.labels) {
107 | let y = yc * N - coords.y, x = xc * N - coords.x
108 | if (zoom > coords.z && y > -margin1 && y < 1+margin1 && x > -margin1 && x < 1+margin1) {
109 | let xS = size.x * x, yS = size.y * y
110 | ctx.fillRect(xS-1,yS-1,2,2)
111 | }
112 | }
113 |
114 | ctx.fillStyle = restoreFill
115 | }
116 |
117 | for (let [yc, xc, name, zoom] of set.labels) {
118 | if (zoom > coords.z) continue
119 |
120 | let y = yc * N - coords.y, x = xc * N - coords.x
121 | if (y > -margin3 && y < 1+margin3 && x > -margin3 && x < 1+margin3) {
122 | let xS = size.x * x, yS = size.y * y
123 | if (maxWidth) {
124 | ctx.strokeText(name, xS, yS, maxWidth)
125 | ctx.fillText(name, xS, yS, maxWidth)
126 | }
127 | else {
128 | ctx.strokeText(name, xS, yS)
129 | ctx.fillText(name, xS, yS)
130 | }
131 | }
132 | }
133 | }
134 |
135 | if (specialOptions.lineDash) ctx.setLineDash([])
136 |
137 | // transformed = set.type == 'path'
138 | }
139 |
140 | // if (!places.path2ds)
141 | // places.path2ds = places.paths.map(p => [new Path2D(p[0]), p[1]])
142 |
143 | // if (!places.lakepath2ds)
144 | // places.lakepath2ds = places.lakes.map(p => [new Path2D(p[0]), p[1]])
145 |
146 | // if (!places.statepath2ds)
147 | // places.statepath2ds = places.states.map(p => [new Path2D(p[0]), p[1]])
148 |
149 | // ctx.fillStyle = opts.backgroundColor || (places.path2ds.length ? "#aad3df" : 'white')
150 | // ctx.fillRect(0, 0, size.x, size.y)
151 |
152 | // ctx.translate(-size.x*coords.x, -size.x*coords.y)
153 | // ctx.scale(size.x*N/vwidth,size.y*N/vheight)
154 | // ctx.fillStyle = opts.borderFillColor || '#fdf9f1'
155 | // ctx.lineWidth = (opts.borderWidth||4)/N
156 | // ctx.lineJoin = 'round'
157 |
158 | // let pathsToDraw = new Path2D()
159 |
160 | // for (let [p, bounds] of places.path2ds) { // 60-100 fails
161 | // if (!(bounds[0] > rbound || bounds[2] < lbound || bounds[1] > bbound || bounds[3] < tbound)) {
162 | // pathsToDraw.addPath(p)
163 | // }
164 | // }
165 |
166 | // let statePathsToDraw = new Path2D()
167 |
168 | // if (coords.z > 3 && opts.stateColor != 'transparent') {
169 | // for (let [p, bounds] of places.statepath2ds) { // 60-100 fails
170 | // if (!(bounds[0] > rbound || bounds[2] < lbound || bounds[1] > bbound || bounds[3] < tbound)) {
171 | // statePathsToDraw.addPath(p)
172 | // }
173 | // }
174 | // }
175 |
176 | // if (opts.borderFillColor != 'transparent')
177 | // ctx.fill(pathsToDraw)
178 |
179 | // ctx.setLineDash([5/N, 5/N])
180 | // ctx.lineWidth = (opts.borderWidth||4)/N/2
181 | // ctx.strokeStyle = opts.stateColor || '#b4a6ae'
182 |
183 | // if (opts.stateStrokeColor != 'transparent')
184 | // ctx.stroke(statePathsToDraw)
185 |
186 | // ctx.setLineDash([])
187 |
188 | // ctx.lineWidth = (opts.borderWidth||4)/N
189 | // ctx.strokeStyle = opts.borderColor || '#b4a6ae'
190 |
191 | // if (opts.borderStrokeColor != 'transparent')
192 | // ctx.stroke(pathsToDraw)
193 |
194 | // ctx.fillStyle = opts.backgroundColor || '#aad3df'
195 |
196 | // let lakePathsToDraw = new Path2D()
197 |
198 | // for (let [p, bounds] of places.lakepath2ds) { // 60-100 fails
199 | // if (!(bounds[0] > rbound || bounds[2] < lbound || bounds[1] > bbound || bounds[3] < tbound)) {
200 | // lakePathsToDraw.addPath(p)
201 | // }
202 | // }
203 |
204 | // if (opts.backgroundColor != 'transparent')
205 | // ctx.fill(lakePathsToDraw)
206 | // if (opts.borderStrokeColor != 'transparent')
207 | // ctx.stroke(lakePathsToDraw)
208 |
209 | // ctx.resetTransform()
210 |
211 | // let dotColor = opts.dotColor || (places.path2ds.length ? 'transparent' : 'red')
212 | // ctx.fillStyle = dotColor
213 |
214 | // if (dotColor != 'transparent')
215 | // for (let [yc, xc, name, zoom] of places.cities) {
216 | // let y = yc * N - coords.y, x = xc * N - coords.x
217 | // if (zoom > coords.z && y > -margin1 && y < 1+margin1 && x > -margin1 && x < 1+margin1) {
218 | // let xS = size.x * x, yS = size.y * y
219 | // ctx.fillRect(xS-1,yS-1,2,2)
220 | // }
221 | // }
222 |
223 | // ctx.strokeStyle = opts.textStrokeColor || 'rgba(255,255,255,.8)'
224 | // ctx.lineWidth = opts.textStrokeWidth || 3
225 | // ctx.textAlign = 'center'
226 | // ctx.fillStyle = opts.textFillColor || "black";
227 | // ctx.font = opts.cityFont || '12px Arial, Helvetica, Ubuntu, sans-serif'
228 |
229 | // for (let [yc, xc, name, zoom] of places.cities) {
230 | // if (zoom > coords.z) continue
231 |
232 | // let y = yc * N - coords.y, x = xc * N - coords.x
233 | // if (y > -margin2 && y < 1+margin2 && x > -margin2 && x < 1+margin2) {
234 |
235 | // let xS = size.x * x, yS = size.y * y
236 | // ctx.strokeText(name, xS, yS, 70)
237 | // ctx.fillText(name, xS, yS, 70)
238 | // }
239 | // }
240 |
241 | // ctx.font = opts.countryFont || 'bold 14px Arial, Helvetica, Ubuntu, sans-serif'
242 |
243 | // for (let [yc, xc, name, zoom] of places.countries) {
244 | // if (zoom > coords.z || coords.z > 8) continue
245 |
246 | // let y = yc * N - coords.y, x = xc * N - coords.x
247 | // if (y > -margin3 && y < 1+margin3 && x > -margin3 && x < 1+margin3) {
248 | // let xS = size.x * x, yS = size.y * y
249 | // ctx.strokeText(name, xS, yS, 100)
250 | // ctx.fillText(name, xS, yS, 100)
251 | // }
252 | // }
253 | return tile;
254 | }
255 |
256 |
257 | let cb = places.find(p => p.id == 'country_borders')
258 |
259 | let defaultStyling = {
260 | background: {
261 | style: {
262 | fillStyle: (cb && cb.paths.length ? "#aad3df" : 'white')
263 | }
264 | },
265 | country_borders: {
266 | style: {
267 | fillStyle: '#fdf9f1',
268 | strokeStyle: '#b4a6ae',
269 | lineWidth: 1
270 | },
271 | },
272 | state_borders: {
273 | style: {
274 | fillStyle: 'transparent',
275 | strokeStyle: '#b4a6ae',
276 | lineWidth: 0.5
277 | },
278 | options: {lineDash: [2, 2], minZoom: 4}
279 | },
280 | lakes: {
281 | style: {
282 | fillStyle: '#aad3df',
283 | strokeStyle: '#b4a6ae',
284 | lineJoin: 'round'
285 | }
286 | },
287 | country_labels: {
288 | style: {
289 | fillStyle: 'black',
290 | strokeStyle: 'rgba(255,255,255,.8)',
291 | lineWidth: 3,
292 | font: 'bold 14px Arial, Helvetica, Ubuntu, sans-serif'
293 | },
294 | options: {maxWidth: 100, maxZoom: 8}
295 | },
296 | city_labels: {
297 | style: {
298 | fillStyle: 'black',
299 | strokeStyle: 'rgba(255,255,255,.8)',
300 | lineWidth: 3,
301 | font: '12px Arial, Helvetica, Ubuntu, sans-serif'
302 | },
303 | options: {maxWidth: 70, dotColor: (cb ? null : 'red')}
304 | }
305 | }
306 |
307 |
308 | let places
309 |
310 | async function handleTileRequest(request, match) {
311 | let cache = await caches.open(cacheName)
312 | // Go to the network first
313 | try {
314 | let response = await fetch(request.url)
315 | if (!response.ok) throw new Error('No 200')
316 | return response
317 | }
318 | // If the network is unavailable, create a replacement tile locally
319 | catch(e) {
320 | try {
321 | places = places || await (await cache.match(TWM)).json()
322 | const canvas = new OffscreenCanvas(TILESIZE, TILESIZE)
323 | let coords = {x: +match.groups.x, y: +match.groups.y, z: +match.groups.z}
324 |
325 | drawPlaces(canvas, coords, places, drawOptions)
326 |
327 | let blob = await canvas.convertToBlob({type: 'image/png'})
328 |
329 | const headers = new Headers()
330 | headers.set('content-type', blob.type)
331 | headers.set('content-length', blob.size)
332 | headers.set('access-control-allow-origin', '*')
333 |
334 | return new Response(blob, {headers: headers})
335 | }
336 | catch (e) {
337 | console.log(e)
338 | }
339 | }
340 | }
341 |
342 | self.addEventListener('fetch', (event) => {
343 | if (event.request.method != 'GET')
344 | return
345 |
346 | let match = REGEXP.exec(event.request.url)
347 |
348 | if (event.request.destination === 'image' && match) {
349 | event.respondWith(handleTileRequest(event.request, match))
350 | }
351 | else {
352 | // Open the cache
353 | event.respondWith(caches.open(cacheName).then((cache) => {
354 | // Go to the network first
355 | return fetch(event.request).then((fetchedResponse) => {
356 | // IMPORTANT: Tell the service worker what not to cache
357 | if (!['image', 'video', 'audio'].includes(event.request.destination))
358 | // Cache response
359 | cache.put(event.request, fetchedResponse.clone());
360 |
361 | return fetchedResponse;
362 | }).catch(() => {
363 | // If the network is unavailable, try to get it from cache
364 | return cache.match(event.request.url);
365 | });
366 | }));
367 | }
368 | });
369 |
--------------------------------------------------------------------------------