├── 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 | --------------------------------------------------------------------------------