10 #include "GeoDataPlacemark.h"
13 #include "GeoDataPlacemark_p.h"
15 #include "GeoDataMultiGeometry.h"
16 #include "GeoDataLatLonAltBox.h"
17 #include "GeoDataData.h"
18 #include "osm/OsmPlacemarkData.h"
21 #include <QDataStream>
22 #include "MarbleDebug.h"
23 #include "GeoDataTrack.h"
24 #include "GeoDataModel.h"
26 #include <QXmlStreamWriter>
31 const OsmPlacemarkData GeoDataPlacemarkPrivate::s_nullOsmPlacemarkData = OsmPlacemarkData();
32 const GeoDataPlacemarkExtendedData GeoDataPlacemarkPrivate::s_nullPlacemarkExtendedData = GeoDataPlacemarkExtendedData();
38 d->m_geometry->setParent(
this);
43 :
GeoDataFeature(other, new GeoDataPlacemarkPrivate(*other.d_func()))
47 d->m_geometry->setParent(
this);
56 d->m_geometry->setParent(
this);
80 const GeoDataPlacemarkPrivate*
const other_d = other.d_func();
82 d->m_population != other_d->m_population) {
86 if ((d->m_placemarkExtendedData && !other_d->m_placemarkExtendedData) &&
87 (*d->m_placemarkExtendedData != GeoDataPlacemarkExtendedData())) {
91 if ((!d->m_placemarkExtendedData && other_d->m_placemarkExtendedData) &&
92 (GeoDataPlacemarkExtendedData() != *other_d->m_placemarkExtendedData)) {
96 if (d->m_placemarkExtendedData && other_d->m_placemarkExtendedData &&
97 !(*d->m_placemarkExtendedData == *other_d->m_placemarkExtendedData)) {
101 if (!d->m_geometry && !other_d->m_geometry) {
104 if ((!d->m_geometry && other_d->m_geometry) ||
105 (d->m_geometry && !other_d->m_geometry)) {
109 if (*d->m_geometry != *other_d->m_geometry) {
123 return GeoDataTypes::GeoDataPlacemarkType;
136 return d->m_visualCategory;
142 d->m_visualCategory = index;
148 return d->m_geometry;
154 return d->m_geometry;
160 return d->osmPlacemarkData();
166 d->osmPlacemarkData() =
osmData;
172 return d->osmPlacemarkData();
175 bool GeoDataPlacemark::hasOsmData()
const
178 return d->m_osmPlacemarkData !=
nullptr;
184 delete d->m_osmPlacemarkData;
185 d->m_osmPlacemarkData =
nullptr;
190 return dynamic_cast<const GeoDataLookAt*
>(
abstractView() );
198 bool GeoDataPlacemark::placemarkLayoutOrderCompare(
const GeoDataPlacemark *left,
const GeoDataPlacemark *right)
200 const GeoDataPlacemarkPrivate *
const left_d = left->d_func();
201 const GeoDataPlacemarkPrivate *
const right_d = right->d_func();
203 if (left_d->m_zoomLevel != right_d->m_zoomLevel) {
204 return (left_d->m_zoomLevel < right_d->m_zoomLevel);
207 if (left_d->m_popularity != right_d->m_popularity) {
208 return (left_d->m_popularity > right_d->m_popularity);
217 bool hasIcon =
false;
222 if (geodata_cast<GeoDataPoint>(d->m_geometry)
223 || geodata_cast<GeoDataPolygon>(d->m_geometry)
224 || geodata_cast<GeoDataLinearRing>(d->m_geometry)) {
226 coord = d->m_geometry->latLonAltBox().center();
227 }
else if (
const auto multiGeometry = geodata_cast<GeoDataMultiGeometry>(d->m_geometry)) {
230 for ( ; it != end; ++it ) {
231 if (geodata_cast<GeoDataPoint>(*it)
232 || geodata_cast<GeoDataPolygon>(*it)
233 || geodata_cast<GeoDataLinearRing>(*it)) {
239 coord = d->m_geometry->latLonAltBox().center();
240 }
else if (
const auto track = geodata_cast<GeoDataTrack>(d->m_geometry)) {
241 hasIcon = track->size() != 0 && track->firstWhen() <= dateTime;
242 coord = track->coordinatesAt( dateTime );
243 }
else if (
const auto lineString = geodata_cast<GeoDataLineString>(d->m_geometry)) {
244 auto const size = lineString->size();
247 }
else if (size < 3) {
249 return lineString->latLonAltBox().center();
251 return lineString->at(size / 2);
254 coord = d->m_geometry->latLonAltBox().center();
258 if ( iconAtCoordinates !=
nullptr ) {
259 *iconAtCoordinates = hasIcon;
282 delete d->m_geometry;
283 d->m_geometry = entry;
293 for (
const QString &uiLanguage: uiLanguages) {
294 for (
auto tagIter = data.
tagsBegin(), end = data.tagsEnd(); tagIter != end; ++tagIter) {
296 QStringRef const tagLanguage = tagIter.key().midRef(5);
297 if (tagLanguage == uiLanguage) {
298 return tagIter.value();
311 switch (d->m_visualCategory) {
312 case Valley:
return GeoDataPlacemarkPrivate::tr(
"Valley");
313 case OtherTerrain:
return GeoDataPlacemarkPrivate::tr(
"Terrain");
314 case Crater:
return GeoDataPlacemarkPrivate::tr(
"Crater");
315 case Mare:
return GeoDataPlacemarkPrivate::tr(
"Sea");
316 case MannedLandingSite:
return GeoDataPlacemarkPrivate::tr(
"Manned Landing Site");
317 case RoboticRover:
return GeoDataPlacemarkPrivate::tr(
"Robotic Rover");
318 case UnmannedSoftLandingSite:
return GeoDataPlacemarkPrivate::tr(
"Unmanned Soft Landing Site");
319 case UnmannedHardLandingSite:
return GeoDataPlacemarkPrivate::tr(
"Unmanned Hard Landing Site");
320 case Mons:
return GeoDataPlacemarkPrivate::tr(
"Mountain");
321 case SmallCity:
return GeoDataPlacemarkPrivate::tr(
"City");
322 case SmallCountyCapital:
return GeoDataPlacemarkPrivate::tr(
"County Capital");
323 case SmallStateCapital:
return GeoDataPlacemarkPrivate::tr(
"State Capital");
324 case SmallNationCapital:
return GeoDataPlacemarkPrivate::tr(
"Nation Capital");
325 case MediumCity:
return GeoDataPlacemarkPrivate::tr(
"City");
326 case MediumCountyCapital:
return GeoDataPlacemarkPrivate::tr(
"County Capital");
327 case MediumStateCapital:
return GeoDataPlacemarkPrivate::tr(
"State Capital");
328 case MediumNationCapital:
return GeoDataPlacemarkPrivate::tr(
"Nation Capital");
329 case BigCity:
return GeoDataPlacemarkPrivate::tr(
"City");
330 case BigCountyCapital:
return GeoDataPlacemarkPrivate::tr(
"County Capital");
331 case BigStateCapital:
return GeoDataPlacemarkPrivate::tr(
"State Capital");
332 case BigNationCapital:
return GeoDataPlacemarkPrivate::tr(
"Nation Capital");
333 case LargeCity:
return GeoDataPlacemarkPrivate::tr(
"City");
334 case LargeCountyCapital:
return GeoDataPlacemarkPrivate::tr(
"County Capital");
335 case LargeStateCapital:
return GeoDataPlacemarkPrivate::tr(
"State Capital");
336 case LargeNationCapital:
return GeoDataPlacemarkPrivate::tr(
"Nation Capital");
337 case Nation:
return GeoDataPlacemarkPrivate::tr(
"Nation");
338 case Mountain:
return GeoDataPlacemarkPrivate::tr(
"Mountain");
339 case Volcano:
return GeoDataPlacemarkPrivate::tr(
"Volcano");
340 case Continent:
return GeoDataPlacemarkPrivate::tr(
"Continent");
341 case Ocean:
return GeoDataPlacemarkPrivate::tr(
"Ocean");
342 case GeographicPole:
return GeoDataPlacemarkPrivate::tr(
"Geographic Pole");
343 case MagneticPole:
return GeoDataPlacemarkPrivate::tr(
"Magnetic Pole");
344 case ShipWreck:
return GeoDataPlacemarkPrivate::tr(
"Ship Wreck");
345 case AirPort:
return GeoDataPlacemarkPrivate::tr(
"Air Port");
346 case Observatory:
return GeoDataPlacemarkPrivate::tr(
"Observatory");
347 case MilitaryDangerArea:
return GeoDataPlacemarkPrivate::tr(
"Military Danger Area");
348 case OsmSite:
return GeoDataPlacemarkPrivate::tr(
"OSM Site");
349 case Coordinate:
return GeoDataPlacemarkPrivate::tr(
"Coordinate");
350 case Bookmark:
return GeoDataPlacemarkPrivate::tr(
"Bookmark");
351 case Satellite:
return GeoDataPlacemarkPrivate::tr(
"Satellite");
354 case PlaceCity:
return GeoDataPlacemarkPrivate::tr(
"City");
355 case PlaceCityCapital:
return GeoDataPlacemarkPrivate::tr(
"City Capital");
356 case PlaceCityNationalCapital:
return GeoDataPlacemarkPrivate::tr(
"National Capital");
357 case PlaceSuburb:
return GeoDataPlacemarkPrivate::tr(
"Suburb");
358 case PlaceHamlet:
return GeoDataPlacemarkPrivate::tr(
"Hamlet");
359 case PlaceLocality:
return GeoDataPlacemarkPrivate::tr(
"Locality");
360 case PlaceTown:
return GeoDataPlacemarkPrivate::tr(
"Town");
361 case PlaceTownCapital:
return GeoDataPlacemarkPrivate::tr(
"Town Capital");
362 case PlaceTownNationalCapital:
return GeoDataPlacemarkPrivate::tr(
"National Capital");
363 case PlaceVillage:
return GeoDataPlacemarkPrivate::tr(
"Village");
364 case PlaceVillageCapital:
return GeoDataPlacemarkPrivate::tr(
"Village Capital");
365 case PlaceVillageNationalCapital:
return GeoDataPlacemarkPrivate::tr(
"National Capital");
366 case NaturalWater:
return GeoDataPlacemarkPrivate::tr(
"Water");
367 case NaturalReef:
return GeoDataPlacemarkPrivate::tr(
"Reef");
368 case NaturalWood:
return GeoDataPlacemarkPrivate::tr(
"Wood");
369 case NaturalBeach:
return GeoDataPlacemarkPrivate::tr(
"Beach");
370 case NaturalWetland:
return GeoDataPlacemarkPrivate::tr(
"Wetland");
371 case NaturalGlacier:
return GeoDataPlacemarkPrivate::tr(
"Glacier");
372 case NaturalIceShelf:
return GeoDataPlacemarkPrivate::tr(
"Ice Shelf");
373 case NaturalScrub:
return GeoDataPlacemarkPrivate::tr(
"Scrub");
374 case NaturalCliff:
return GeoDataPlacemarkPrivate::tr(
"Cliff");
375 case NaturalHeath:
return GeoDataPlacemarkPrivate::tr(
"Heath");
376 case HighwayTrafficSignals:
return GeoDataPlacemarkPrivate::tr(
"Traffic Signals");
377 case HighwayElevator:
return GeoDataPlacemarkPrivate::tr(
"Elevator");
378 case HighwaySteps:
return GeoDataPlacemarkPrivate::tr(
"Steps");
379 case HighwayUnknown:
return GeoDataPlacemarkPrivate::tr(
"Unknown Road");
380 case HighwayPath:
return GeoDataPlacemarkPrivate::tr(
"Path");
381 case HighwayFootway:
return GeoDataPlacemarkPrivate::tr(
"Footway");
382 case HighwayTrack:
return GeoDataPlacemarkPrivate::tr(
"Track");
383 case HighwayPedestrian:
return GeoDataPlacemarkPrivate::tr(
"Footway");
384 case HighwayCycleway:
return GeoDataPlacemarkPrivate::tr(
"Cycleway");
385 case HighwayService:
return GeoDataPlacemarkPrivate::tr(
"Service Road");
386 case HighwayRoad:
return GeoDataPlacemarkPrivate::tr(
"Road");
387 case HighwayResidential:
return GeoDataPlacemarkPrivate::tr(
"Residential Road");
388 case HighwayLivingStreet:
return GeoDataPlacemarkPrivate::tr(
"Living Street");
389 case HighwayUnclassified:
return GeoDataPlacemarkPrivate::tr(
"Unclassified Road");
390 case HighwayTertiaryLink:
return GeoDataPlacemarkPrivate::tr(
"Tertiary Link Road");
391 case HighwayTertiary:
return GeoDataPlacemarkPrivate::tr(
"Tertiary Road");
392 case HighwaySecondaryLink:
return GeoDataPlacemarkPrivate::tr(
"Secondary Link Road");
393 case HighwaySecondary:
return GeoDataPlacemarkPrivate::tr(
"Secondary Road");
394 case HighwayPrimaryLink:
return GeoDataPlacemarkPrivate::tr(
"Primary Link Road");
395 case HighwayPrimary:
return GeoDataPlacemarkPrivate::tr(
"Primary Road");
396 case HighwayRaceway:
return GeoDataPlacemarkPrivate::tr(
"Raceway");
397 case HighwayTrunkLink:
return GeoDataPlacemarkPrivate::tr(
"Trunk Link Road");
398 case HighwayTrunk:
return GeoDataPlacemarkPrivate::tr(
"Trunk Road");
399 case HighwayMotorwayLink:
return GeoDataPlacemarkPrivate::tr(
"Motorway Link Road");
400 case HighwayMotorway:
return GeoDataPlacemarkPrivate::tr(
"Motorway");
401 case HighwayCorridor:
return GeoDataPlacemarkPrivate::tr(
"Corridor");
402 case Building:
return GeoDataPlacemarkPrivate::tr(
"Building");
403 case AccomodationCamping:
return GeoDataPlacemarkPrivate::tr(
"Camping");
404 case AccomodationHostel:
return GeoDataPlacemarkPrivate::tr(
"Hostel");
405 case AccomodationHotel:
return GeoDataPlacemarkPrivate::tr(
"Hotel");
406 case AccomodationMotel:
return GeoDataPlacemarkPrivate::tr(
"Motel");
407 case AccomodationYouthHostel:
return GeoDataPlacemarkPrivate::tr(
"Youth Hostel");
408 case AccomodationGuestHouse:
return GeoDataPlacemarkPrivate::tr(
"Guest House");
409 case AmenityLibrary:
return GeoDataPlacemarkPrivate::tr(
"Library");
411 case EducationCollege:
return GeoDataPlacemarkPrivate::tr(
"College");
412 case EducationSchool:
return GeoDataPlacemarkPrivate::tr(
"School");
413 case EducationUniversity:
return GeoDataPlacemarkPrivate::tr(
"University");
414 case FoodBar:
return GeoDataPlacemarkPrivate::tr(
"Bar");
415 case FoodBiergarten:
return GeoDataPlacemarkPrivate::tr(
"Biergarten");
416 case FoodCafe:
return GeoDataPlacemarkPrivate::tr(
"Cafe");
417 case FoodFastFood:
return GeoDataPlacemarkPrivate::tr(
"Fast Food");
418 case FoodPub:
return GeoDataPlacemarkPrivate::tr(
"Pub");
419 case FoodRestaurant:
return GeoDataPlacemarkPrivate::tr(
"Restaurant");
420 case HealthDentist:
return GeoDataPlacemarkPrivate::tr(
"Dentist");
421 case HealthDoctors:
return GeoDataPlacemarkPrivate::tr(
"Doctors");
422 case HealthHospital:
return GeoDataPlacemarkPrivate::tr(
"Hospital");
423 case HealthPharmacy:
return GeoDataPlacemarkPrivate::tr(
"Pharmacy");
424 case HealthVeterinary:
return GeoDataPlacemarkPrivate::tr(
"Veterinary");
425 case MoneyAtm:
return GeoDataPlacemarkPrivate::tr(
"ATM");
426 case MoneyBank:
return GeoDataPlacemarkPrivate::tr(
"Bank");
427 case HistoricArchaeologicalSite:
return GeoDataPlacemarkPrivate::tr(
"Archaeological Site");
428 case AmenityEmbassy:
return GeoDataPlacemarkPrivate::tr(
"Embassy");
429 case AmenityEmergencyPhone:
return GeoDataPlacemarkPrivate::tr(
"Emergency Phone");
430 case AmenityMountainRescue:
return GeoDataPlacemarkPrivate::tr(
"Mountain Rescue");
431 case LeisureWaterPark:
return GeoDataPlacemarkPrivate::tr(
"Water Park");
432 case AmenityCommunityCentre:
return GeoDataPlacemarkPrivate::tr(
"Community Centre");
433 case AmenityFountain:
return GeoDataPlacemarkPrivate::tr(
"Fountain");
434 case AmenityNightClub:
return GeoDataPlacemarkPrivate::tr(
"Night Club");
435 case AmenityBench:
return GeoDataPlacemarkPrivate::tr(
"Bench");
436 case AmenityCourtHouse:
return GeoDataPlacemarkPrivate::tr(
"Court House");
437 case AmenityFireStation:
return GeoDataPlacemarkPrivate::tr(
"Fire Station");
438 case AmenityHuntingStand:
return GeoDataPlacemarkPrivate::tr(
"Hunting Stand");
439 case AmenityPolice:
return GeoDataPlacemarkPrivate::tr(
"Police");
440 case AmenityPostBox:
return GeoDataPlacemarkPrivate::tr(
"Post Box");
441 case AmenityPostOffice:
return GeoDataPlacemarkPrivate::tr(
"Post Office");
442 case AmenityPrison:
return GeoDataPlacemarkPrivate::tr(
"Prison");
443 case AmenityRecycling:
return GeoDataPlacemarkPrivate::tr(
"Recycling");
444 case AmenityShelter:
return GeoDataPlacemarkPrivate::tr(
"Shelter");
445 case AmenityTelephone:
return GeoDataPlacemarkPrivate::tr(
"Telephone");
446 case AmenityToilets:
return GeoDataPlacemarkPrivate::tr(
"Toilets");
447 case AmenityTownHall:
return GeoDataPlacemarkPrivate::tr(
"Town Hall");
448 case AmenityWasteBasket:
return GeoDataPlacemarkPrivate::tr(
"Waste Basket");
449 case AmenityDrinkingWater:
return GeoDataPlacemarkPrivate::tr(
"Drinking Water");
450 case AmenityGraveyard:
return GeoDataPlacemarkPrivate::tr(
"Graveyard");
451 case AmenityChargingStation:
return GeoDataPlacemarkPrivate::tr(
"Charging Station");
452 case AmenityCarWash:
return GeoDataPlacemarkPrivate::tr(
"Car Wash");
453 case AmenitySocialFacility:
return GeoDataPlacemarkPrivate::tr(
"Social Facility");
454 case BarrierCityWall:
return GeoDataPlacemarkPrivate::tr(
"City Wall");
455 case BarrierGate:
return GeoDataPlacemarkPrivate::tr(
"Gate");
456 case BarrierLiftGate:
return GeoDataPlacemarkPrivate::tr(
"Lift Gate");
457 case BarrierWall:
return GeoDataPlacemarkPrivate::tr(
"Wall");
458 case NaturalVolcano:
return GeoDataPlacemarkPrivate::tr(
"Volcano");
459 case NaturalPeak:
return GeoDataPlacemarkPrivate::tr(
"Peak");
460 case NaturalTree:
return GeoDataPlacemarkPrivate::tr(
"Tree");
461 case NaturalCave:
return GeoDataPlacemarkPrivate::tr(
"Cave Entrance");
462 case ShopBeverages:
return GeoDataPlacemarkPrivate::tr(
"Beverages");
463 case ShopHifi:
return GeoDataPlacemarkPrivate::tr(
"Hifi");
464 case ShopSupermarket:
return GeoDataPlacemarkPrivate::tr(
"Supermarket");
465 case ShopAlcohol:
return GeoDataPlacemarkPrivate::tr(
"Liquor Store");
466 case ShopBakery:
return GeoDataPlacemarkPrivate::tr(
"Bakery");
467 case ShopButcher:
return GeoDataPlacemarkPrivate::tr(
"Butcher");
468 case ShopConfectionery:
return GeoDataPlacemarkPrivate::tr(
"Confectionery");
469 case ShopConvenience:
return GeoDataPlacemarkPrivate::tr(
"Convenience Shop");
470 case ShopGreengrocer:
return GeoDataPlacemarkPrivate::tr(
"Greengrocer");
471 case ShopSeafood:
return GeoDataPlacemarkPrivate::tr(
"Seafood Shop");
472 case ShopDepartmentStore:
return GeoDataPlacemarkPrivate::tr(
"Department Store");
473 case ShopKiosk:
return GeoDataPlacemarkPrivate::tr(
"Kiosk");
474 case ShopBag:
return GeoDataPlacemarkPrivate::tr(
"Bag Shop");
475 case ShopClothes:
return GeoDataPlacemarkPrivate::tr(
"Clothes Shop");
476 case ShopFashion:
return GeoDataPlacemarkPrivate::tr(
"Fashion Shop");
477 case ShopJewelry:
return GeoDataPlacemarkPrivate::tr(
"Jewelry Shop");
478 case ShopShoes:
return GeoDataPlacemarkPrivate::tr(
"Shoe Shop");
479 case ShopVarietyStore:
return GeoDataPlacemarkPrivate::tr(
"Variety Store");
480 case ShopBeauty:
return GeoDataPlacemarkPrivate::tr(
"Beauty Services");
481 case ShopChemist:
return GeoDataPlacemarkPrivate::tr(
"Chemist");
482 case ShopCosmetics:
return GeoDataPlacemarkPrivate::tr(
"Cosmetics");
483 case ShopHairdresser:
return GeoDataPlacemarkPrivate::tr(
"Hairdresser");
484 case ShopOptician:
return GeoDataPlacemarkPrivate::tr(
"Optician");
485 case ShopPerfumery:
return GeoDataPlacemarkPrivate::tr(
"Perfumery");
486 case ShopDoitYourself:
return GeoDataPlacemarkPrivate::tr(
"Hardware Store");
487 case ShopFlorist:
return GeoDataPlacemarkPrivate::tr(
"Florist");
488 case ShopHardware:
return GeoDataPlacemarkPrivate::tr(
"Hardware Store");
489 case ShopFurniture:
return GeoDataPlacemarkPrivate::tr(
"Furniture Store");
490 case ShopElectronics:
return GeoDataPlacemarkPrivate::tr(
"Electronics Shop");
491 case ShopMobilePhone:
return GeoDataPlacemarkPrivate::tr(
"Mobile Phone Shop");
492 case ShopBicycle:
return GeoDataPlacemarkPrivate::tr(
"Bicycle Shop");
493 case ShopCar:
return GeoDataPlacemarkPrivate::tr(
"Car Dealer");
494 case ShopCarRepair:
return GeoDataPlacemarkPrivate::tr(
"Car Repair Shop");
495 case ShopCarParts:
return GeoDataPlacemarkPrivate::tr(
"Car Parts");
496 case ShopMotorcycle:
return GeoDataPlacemarkPrivate::tr(
"Motorcycle Shop");
497 case ShopOutdoor:
return GeoDataPlacemarkPrivate::tr(
"Outdoor Shop");
498 case ShopSports:
return GeoDataPlacemarkPrivate::tr(
"Sports Shop");
499 case ShopCopy:
return GeoDataPlacemarkPrivate::tr(
"Printing Services");
500 case ShopArt:
return GeoDataPlacemarkPrivate::tr(
"Art Shop");
501 case ShopMusicalInstrument:
return GeoDataPlacemarkPrivate::tr(
"Musical Instrument Shop");
502 case ShopPhoto:
return GeoDataPlacemarkPrivate::tr(
"Photo Shop");
503 case ShopBook:
return GeoDataPlacemarkPrivate::tr(
"Bookshop");
504 case ShopGift:
return GeoDataPlacemarkPrivate::tr(
"Gift Shop");
505 case ShopStationery:
return GeoDataPlacemarkPrivate::tr(
"Stationery");
506 case ShopLaundry:
return GeoDataPlacemarkPrivate::tr(
"Laundry");
507 case ShopPet:
return GeoDataPlacemarkPrivate::tr(
"Pet Shop");
508 case ShopToys:
return GeoDataPlacemarkPrivate::tr(
"Toy Store");
509 case ShopTravelAgency:
return GeoDataPlacemarkPrivate::tr(
"Travel Agency");
510 case ShopDeli:
return GeoDataPlacemarkPrivate::tr(
"Deli");
511 case ShopTobacco:
return GeoDataPlacemarkPrivate::tr(
"Tobacco Shop");
512 case ShopTea:
return GeoDataPlacemarkPrivate::tr(
"Tea Shop");
513 case ShopComputer:
return GeoDataPlacemarkPrivate::tr(
"Computer Shop");
514 case ShopGardenCentre:
return GeoDataPlacemarkPrivate::tr(
"Garden Centre");
515 case Shop:
return GeoDataPlacemarkPrivate::tr(
"Shop");
516 case ManmadeBridge:
return GeoDataPlacemarkPrivate::tr(
"Bridge");
517 case ManmadeLighthouse:
return GeoDataPlacemarkPrivate::tr(
"Lighthouse");
518 case ManmadePier:
return GeoDataPlacemarkPrivate::tr(
"Pier");
519 case ManmadeWaterTower:
return GeoDataPlacemarkPrivate::tr(
"Water Tower");
520 case ManmadeWindMill:
return GeoDataPlacemarkPrivate::tr(
"Wind Mill");
521 case ManmadeCommunicationsTower:
return GeoDataPlacemarkPrivate::tr(
"Communications Tower");
522 case TourismAttraction:
return GeoDataPlacemarkPrivate::tr(
"Tourist Attraction");
523 case TourismArtwork:
return GeoDataPlacemarkPrivate::tr(
"Artwork");
524 case HistoricCastle:
return GeoDataPlacemarkPrivate::tr(
"Castle");
525 case AmenityCinema:
return GeoDataPlacemarkPrivate::tr(
"Cinema");
526 case TourismInformation:
return GeoDataPlacemarkPrivate::tr(
"Information");
527 case HistoricMonument:
return GeoDataPlacemarkPrivate::tr(
"Monument");
528 case TourismMuseum:
return GeoDataPlacemarkPrivate::tr(
"Museum");
529 case HistoricRuins:
return GeoDataPlacemarkPrivate::tr(
"Ruin");
530 case AmenityTheatre:
return GeoDataPlacemarkPrivate::tr(
"Theatre");
531 case TourismThemePark:
return GeoDataPlacemarkPrivate::tr(
"Theme Park");
532 case TourismViewPoint:
return GeoDataPlacemarkPrivate::tr(
"View Point");
533 case TourismZoo:
return GeoDataPlacemarkPrivate::tr(
"Zoo");
534 case TourismAlpineHut:
return GeoDataPlacemarkPrivate::tr(
"Alpine Hut");
535 case TourismWildernessHut:
return GeoDataPlacemarkPrivate::tr(
"Wilderness Hut");
536 case HistoricMemorial:
return GeoDataPlacemarkPrivate::tr(
"Memorial");
537 case TransportAerodrome:
return GeoDataPlacemarkPrivate::tr(
"Aerodrome");
538 case TransportHelipad:
return GeoDataPlacemarkPrivate::tr(
"Helipad");
543 case TransportAirportTerminal:
return GeoDataPlacemarkPrivate::tr(
"Airport Terminal");
544 case TransportBusStation:
return GeoDataPlacemarkPrivate::tr(
"Bus Station");
545 case TransportBusStop:
return GeoDataPlacemarkPrivate::tr(
"Bus Stop");
546 case TransportCarShare:
return GeoDataPlacemarkPrivate::tr(
"Car Sharing");
547 case TransportFuel:
return GeoDataPlacemarkPrivate::tr(
"Gas Station");
548 case TransportParking:
return GeoDataPlacemarkPrivate::tr(
"Parking");
549 case TransportParkingSpace:
return GeoDataPlacemarkPrivate::tr(
"Parking Space");
550 case TransportPlatform:
return GeoDataPlacemarkPrivate::tr(
"Platform");
551 case TransportRentalBicycle:
return GeoDataPlacemarkPrivate::tr(
"Bicycle Rental");
552 case TransportRentalCar:
return GeoDataPlacemarkPrivate::tr(
"Car Rental");
553 case TransportRentalSki:
return GeoDataPlacemarkPrivate::tr(
"Ski Rental");
554 case TransportTaxiRank:
return GeoDataPlacemarkPrivate::tr(
"Taxi Rank");
555 case TransportTrainStation:
return GeoDataPlacemarkPrivate::tr(
"Train Station");
556 case TransportTramStop:
return GeoDataPlacemarkPrivate::tr(
"Tram Stop");
557 case TransportBicycleParking:
return GeoDataPlacemarkPrivate::tr(
"Bicycle Parking");
558 case TransportMotorcycleParking:
return GeoDataPlacemarkPrivate::tr(
"Motorcycle Parking");
559 case TransportSubwayEntrance:
return GeoDataPlacemarkPrivate::tr(
"Subway Entrance");
560 case TransportSpeedCamera:
return GeoDataPlacemarkPrivate::tr(
"Speed Camera");
561 case ReligionPlaceOfWorship:
return GeoDataPlacemarkPrivate::tr(
"Place Of Worship");
562 case ReligionBahai:
return GeoDataPlacemarkPrivate::tr(
"Bahai");
563 case ReligionBuddhist:
return GeoDataPlacemarkPrivate::tr(
"Buddhist");
564 case ReligionChristian:
return GeoDataPlacemarkPrivate::tr(
"Christian");
565 case ReligionMuslim:
return GeoDataPlacemarkPrivate::tr(
"Muslim");
566 case ReligionHindu:
return GeoDataPlacemarkPrivate::tr(
"Hindu");
567 case ReligionJain:
return GeoDataPlacemarkPrivate::tr(
"Jain");
568 case ReligionJewish:
return GeoDataPlacemarkPrivate::tr(
"Jewish");
569 case ReligionShinto:
return GeoDataPlacemarkPrivate::tr(
"Shinto");
570 case ReligionSikh:
return GeoDataPlacemarkPrivate::tr(
"Sikh");
571 case ReligionTaoist:
return GeoDataPlacemarkPrivate::tr(
"Taoist");
572 case LeisureGolfCourse:
return GeoDataPlacemarkPrivate::tr(
"Golf Course");
573 case LeisureMarina:
return GeoDataPlacemarkPrivate::tr(
"Marina");
574 case LeisurePark:
return GeoDataPlacemarkPrivate::tr(
"Park");
575 case LeisurePlayground:
return GeoDataPlacemarkPrivate::tr(
"Playground");
576 case LeisurePitch:
return GeoDataPlacemarkPrivate::tr(
"Pitch");
577 case LeisureSportsCentre:
return GeoDataPlacemarkPrivate::tr(
"Sports Centre");
578 case LeisureStadium:
return GeoDataPlacemarkPrivate::tr(
"Stadium");
579 case LeisureTrack:
return GeoDataPlacemarkPrivate::tr(
"Track");
580 case LeisureSwimmingPool:
return GeoDataPlacemarkPrivate::tr(
"Swimming Pool");
581 case LeisureMinigolfCourse:
return GeoDataPlacemarkPrivate::tr(
"Miniature Golf Course");
582 case LanduseAllotments:
return GeoDataPlacemarkPrivate::tr(
"Allotments");
583 case LanduseBasin:
return GeoDataPlacemarkPrivate::tr(
"Basin");
584 case LanduseCemetery:
return GeoDataPlacemarkPrivate::tr(
"Cemetery");
585 case LanduseCommercial:
return GeoDataPlacemarkPrivate::tr(
"Commercial");
586 case LanduseConstruction:
return GeoDataPlacemarkPrivate::tr(
"Construction");
587 case LanduseFarmland:
return GeoDataPlacemarkPrivate::tr(
"Farmland");
588 case LanduseFarmyard:
return GeoDataPlacemarkPrivate::tr(
"Farmyard");
589 case LanduseGarages:
return GeoDataPlacemarkPrivate::tr(
"Garages");
590 case LanduseGrass:
return GeoDataPlacemarkPrivate::tr(
"Grass");
591 case LanduseIndustrial:
return GeoDataPlacemarkPrivate::tr(
"Industrial");
592 case LanduseLandfill:
return GeoDataPlacemarkPrivate::tr(
"Landfill");
593 case LanduseMeadow:
return GeoDataPlacemarkPrivate::tr(
"Meadow");
594 case LanduseMilitary:
return GeoDataPlacemarkPrivate::tr(
"Military");
595 case LanduseQuarry:
return GeoDataPlacemarkPrivate::tr(
"Quarry");
596 case LanduseRailway:
return GeoDataPlacemarkPrivate::tr(
"Railway");
597 case LanduseReservoir:
return GeoDataPlacemarkPrivate::tr(
"Reservoir");
598 case LanduseResidential:
return GeoDataPlacemarkPrivate::tr(
"Residential");
599 case LanduseRetail:
return GeoDataPlacemarkPrivate::tr(
"Retail");
600 case LanduseOrchard:
return GeoDataPlacemarkPrivate::tr(
"Orchard");
601 case LanduseVineyard:
return GeoDataPlacemarkPrivate::tr(
"Vineyard");
602 case RailwayRail:
return GeoDataPlacemarkPrivate::tr(
"Rail");
603 case RailwayNarrowGauge:
return GeoDataPlacemarkPrivate::tr(
"Narrow Gauge");
604 case RailwayTram:
return GeoDataPlacemarkPrivate::tr(
"Tram");
605 case RailwayLightRail:
return GeoDataPlacemarkPrivate::tr(
"Light Rail");
606 case RailwayAbandoned:
return GeoDataPlacemarkPrivate::tr(
"Abandoned Railway");
607 case RailwaySubway:
return GeoDataPlacemarkPrivate::tr(
"Subway");
608 case RailwayPreserved:
return GeoDataPlacemarkPrivate::tr(
"Preserved Railway");
609 case RailwayMiniature:
return GeoDataPlacemarkPrivate::tr(
"Miniature Railway");
610 case RailwayConstruction:
return GeoDataPlacemarkPrivate::tr(
"Railway Construction");
611 case RailwayMonorail:
return GeoDataPlacemarkPrivate::tr(
"Monorail");
612 case RailwayFunicular:
return GeoDataPlacemarkPrivate::tr(
"Funicular Railway");
613 case PowerTower:
return GeoDataPlacemarkPrivate::tr(
"Power Tower");
614 case AerialwayStation:
return GeoDataPlacemarkPrivate::tr(
"Aerialway Station");
615 case AerialwayPylon:
return GeoDataPlacemarkPrivate::tr(
"Pylon",
"A pylon supporting the aerialway cable e.g. on a ski lift");
616 case AerialwayCableCar:
return GeoDataPlacemarkPrivate::tr(
"Cable Car");
617 case AerialwayGondola:
return GeoDataPlacemarkPrivate::tr(
"Gondola");
618 case AerialwayChairLift:
return GeoDataPlacemarkPrivate::tr(
"Chair Lift");
619 case AerialwayMixedLift:
return GeoDataPlacemarkPrivate::tr(
"Mixed Lift");
620 case AerialwayDragLift:
return GeoDataPlacemarkPrivate::tr(
"Drag Lift");
621 case AerialwayTBar:
return GeoDataPlacemarkPrivate::tr(
"T-Bar");
622 case AerialwayJBar:
return GeoDataPlacemarkPrivate::tr(
"J-Bar");
623 case AerialwayPlatter:
return GeoDataPlacemarkPrivate::tr(
"Platter");
624 case AerialwayRopeTow:
return GeoDataPlacemarkPrivate::tr(
"Rope Tow");
625 case AerialwayMagicCarpet:
return GeoDataPlacemarkPrivate::tr(
"Magic Carpet");
626 case AerialwayZipLine:
return GeoDataPlacemarkPrivate::tr(
"Zip Line");
627 case AerialwayGoods:
return GeoDataPlacemarkPrivate::tr(
"Goods");
628 case PisteDownhill:
return GeoDataPlacemarkPrivate::tr(
"Downhill Piste");
629 case PisteNordic:
return GeoDataPlacemarkPrivate::tr(
"Nordic Piste");
630 case PisteSkitour:
return GeoDataPlacemarkPrivate::tr(
"Skitour");
631 case PisteSled:
return GeoDataPlacemarkPrivate::tr(
"Sled Piste");
632 case PisteHike:
return GeoDataPlacemarkPrivate::tr(
"Winter Hike");
633 case PisteSleigh:
return GeoDataPlacemarkPrivate::tr(
"Sleigh Piste");
634 case PisteIceSkate:
return GeoDataPlacemarkPrivate::tr(
"Ice Skate");
635 case PisteSnowPark:
return GeoDataPlacemarkPrivate::tr(
"Snow Park");
636 case PistePlayground:
return GeoDataPlacemarkPrivate::tr(
"Ski Playground");
637 case PisteSkiJump:
return GeoDataPlacemarkPrivate::tr(
"Ski Jump");
638 case AdminLevel1:
return GeoDataPlacemarkPrivate::tr(
"Admin Boundary (Level 1)");
639 case AdminLevel2:
return GeoDataPlacemarkPrivate::tr(
"Admin Boundary (Level 2)");
640 case AdminLevel3:
return GeoDataPlacemarkPrivate::tr(
"Admin Boundary (Level 3)");
641 case AdminLevel4:
return GeoDataPlacemarkPrivate::tr(
"Admin Boundary (Level 4)");
642 case AdminLevel5:
return GeoDataPlacemarkPrivate::tr(
"Admin Boundary (Level 5)");
643 case AdminLevel6:
return GeoDataPlacemarkPrivate::tr(
"Admin Boundary (Level 6)");
644 case AdminLevel7:
return GeoDataPlacemarkPrivate::tr(
"Admin Boundary (Level 7)");
645 case AdminLevel8:
return GeoDataPlacemarkPrivate::tr(
"Admin Boundary (Level 8)");
646 case AdminLevel9:
return GeoDataPlacemarkPrivate::tr(
"Admin Boundary (Level 9)");
647 case AdminLevel10:
return GeoDataPlacemarkPrivate::tr(
"Admin Boundary (Level 10)");
648 case AdminLevel11:
return GeoDataPlacemarkPrivate::tr(
"Admin Boundary (Level 11)");
649 case BoundaryMaritime:
return GeoDataPlacemarkPrivate::tr(
"Boundary (Maritime)");
650 case Landmass:
return GeoDataPlacemarkPrivate::tr(
"Land Mass");
651 case UrbanArea:
return GeoDataPlacemarkPrivate::tr(
"Urban Area");
652 case InternationalDateLine:
return GeoDataPlacemarkPrivate::tr(
"International Date Line");
653 case Bathymetry:
return GeoDataPlacemarkPrivate::tr(
"Bathymetry");
654 case WaterwayCanal:
return GeoDataPlacemarkPrivate::tr(
"Canal");
655 case WaterwayDrain:
return GeoDataPlacemarkPrivate::tr(
"Drain");
656 case WaterwayDitch:
return GeoDataPlacemarkPrivate::tr(
"Ditch");
657 case WaterwayStream:
return GeoDataPlacemarkPrivate::tr(
"Stream");
658 case WaterwayRiver:
return GeoDataPlacemarkPrivate::tr(
"River");
659 case WaterwayWeir:
return GeoDataPlacemarkPrivate::tr(
"Weir");
660 case CrossingSignals:
return GeoDataPlacemarkPrivate::tr(
"Crosswalk");
661 case CrossingIsland:
return GeoDataPlacemarkPrivate::tr(
"Crosswalk");
662 case CrossingZebra:
return GeoDataPlacemarkPrivate::tr(
"Crosswalk");
663 case CrossingRailway:
return GeoDataPlacemarkPrivate::tr(
"Railway Crossing");
664 case IndoorDoor:
return GeoDataPlacemarkPrivate::tr(
"Door");
665 case IndoorWall:
return GeoDataPlacemarkPrivate::tr(
"Wall");
666 case IndoorRoom:
return GeoDataPlacemarkPrivate::tr(
"Room");
671 case LastIndex:
return QString();
680 return d->m_placemarkExtendedData ? d->m_placemarkExtendedData->m_area : -1.0;
685 if (
area == -1.0 && !d_func()->m_placemarkExtendedData) {
690 d->placemarkExtendedData().m_area =
area;
696 return d->m_population;
708 return d->m_placemarkExtendedData ? d->m_placemarkExtendedData->m_state :
QString();
713 if (
state.
isEmpty() && !d_func()->m_placemarkExtendedData) {
718 d->placemarkExtendedData().m_state =
state;
724 return d->m_placemarkExtendedData ? d->m_placemarkExtendedData->m_countrycode :
QString();
729 if (countrycode.
isEmpty() && !d_func()->m_placemarkExtendedData) {
734 d->placemarkExtendedData().m_countrycode = countrycode;
740 return d->m_placemarkExtendedData ? d->m_placemarkExtendedData->m_isBalloonVisible :
false;
745 if (!visible && !d_func()->m_placemarkExtendedData) {
750 d->placemarkExtendedData().m_isBalloonVisible = visible;
758 stream << d->placemarkExtendedData().m_countrycode;
759 stream << d->placemarkExtendedData().m_area;
760 stream << d->m_population;
762 stream << d->m_geometry->geometryId();
763 d->m_geometry->pack( stream );
767 stream << InvalidGeometryId;
790 stream >> d->placemarkExtendedData().m_countrycode;
791 stream >> d->placemarkExtendedData().m_area;
792 stream >> d->m_population;
794 stream >> geometryId;
796 switch( geometryId ) {
797 case InvalidGeometryId:
802 point->unpack( stream );
806 case GeoDataLineStringId:
809 lineString->
unpack( stream );
813 case GeoDataLinearRingId:
816 linearRing->
unpack( stream );
820 case GeoDataPolygonId:
823 polygon->
unpack( stream );
827 case GeoDataMultiGeometryId:
830 multiGeometry->unpack( stream );
839 delete d->m_geometry;