Folkets kart android. Nye Yandex.Maps, som alle nå kan korrigere selv

Yandex.Maps - gratis kart fra et velkjent russisk selskap. Hovedfordelen med applikasjonen i forhold til analogene er muligheten til å se kart offline. For å gjøre dette må kartet over byen du trenger først lastes inn i enhetens minne. Dette gjøres fra programgrensesnittet og krever ingen spesielle ferdigheter fra brukeren. Interessant nok, før du laster ned, vil programmet tilby deg å velge hvilket kort som passer deg best - offisielt eller "nasjonalt". Hvis alt er mer eller mindre klart med det første alternativet, må vi dvele nærmere på det andre. "Folkets" kart er opprettet direkte av fellesskapsmedlemmer, og er også modellert ved hjelp av data fra åpne kilder. På dem finner du mye mer merker om institusjoner, stopp og andre dagligdagse ting. Umiddelbart merker vi at vi kun anbefaler denne typen kart for store byer.

Blant andre nyttige funksjoner i Yandex.Maps -applikasjonen kan man skille ut de grunnleggende funksjonene til navigatoren. Du kan slå på navigasjonsmodusen umiddelbart etter at du har lagt ruten (manuell eller automatisk). Som alle andre kart kan den presenterte programvareløsningen bestemme brukerens plassering på kartet. Programmet har også muligheten til å se gatepanoramas.

Viktige funksjoner og funksjoner

  • tilbyr brukere offline kart over de fleste byer i Russland, Ukraina og Hviterussland;
  • lar deg se informasjon om nærmeste virksomheter;
  • inkluderer muligheten til å velge en kartvisningsmodus: diagram, satellitt og "folkelig" versjon av kartet;
  • vet hvordan man legger gang- og bilruter;
  • viser informasjon om trafikkork;
  • gjør det mulig å se gaten panoramaer.

Hva er nytt i denne utgivelsen?

8.4.2 (28.10.2016)

  • fikset arbeidet til widgeten for varslingssenteret i noen byer;
  • Fikset en krasj av applikasjonen, som ble observert hvis brukeren spesifiserte et punkt når han skulle bygge en rute manuelt;
  • løste et problem på grunn av at meldinger i "samtaler" kunne vises ufullstendig.

Hei kjære lesere av bloggstedet. I dag ønsket jeg å snakke om Yandex Maps og bruken av dem på nettstedet mitt. Flertallet av nettredaktører er fornøyd med de enkleste funksjonene som er tilgjengelig av konstruktøren som er tilgjengelig på nettet, eller de bruker ganske enkelt de riktige pluginene eller modulene for sitt CMS.

Men de som ønsker å få flere funksjoner og funksjonalitet fra Yandex.Maps API, må lære JavaScript og forstå dokumentasjonen deres.

Dessverre er jeg ikke god i språk, og derfor vil jeg i dette innlegget bare snakke om de enkleste måtene å sette inn Yandex Maps på nettstedet eller bloggen din, og også vise deg hvor du skal lete etter informasjon hvis det virker litt og hva du kan få hvis du vil.

Søk på Yandex -kart, People's Map og Yandex.Directory

Online karttjenesten fra Yandex selv (les om det) dukket opp i 2004 og har fortsatt å utvikle seg siden den gang, spesielt siden den har en veldig mektig konkurrent i møte med Google maps. Innbyggere i mange store byer i Russland, Ukraina, Kasakhstan eller Hviterussland bruker avanserte funksjoner som trafikkork eller panoramaer.

Den siste tjenesten (panoramaer) ble lansert relativt nylig (2009), og Yandexmobile (med fire vidvinkelkameraer på taket) har ennå ikke klart å reise rundt i alle hjørner av vårt enorme hjemland, men der panoramaer allerede har dukket opp, har det blitt mye lettere å planlegge turer langs en ukjent rute.

I tillegg til bilen reiser Yandex Maps -ansatte rundt i noen områder på sykkel eller til fots (for eksempel i parker). Nylig har det også dukket opp panoramaer laget av et helikopter, og for å se dem må du krysse av "Fra luften" under den tilsvarende knappen, men sannheten er at en slik ting bare er tilgjengelig for Peter.

Hvis din bedrift ikke er der, kan du bruke skjemaet for å legge til en ny organisasjon i katalogen, hvis ringeknapp vil vises på høyre side under bekreftelsesskjemaet:

Følg deretter instruksjonene i videoen nedenfor (de spesifiserte dataene, for eksempel telefonnummer eller adresse, må bekreftes, så de må ikke være falske, ellers vil det ikke være mulig å legge til på kartet):

Samtidig må du bli autorisert på Yandex, og det er best hvis dette ikke er din personlige konto, fordi du kanskje må redigere dataene som er lagt til på kartet (eller bestille en prioritert plassering), og det vil ikke alltid være det riktig å stole på kontoen din til en ansatt. Det vil være nok å følge instruksjonene som er gitt.

Det som ellers er attraktivt for brukere av Yandex Maps -søk er det faktum at de kan lese og, om de ønsker det, legge igjen en anmeldelse om organisasjonen. Videre modereres anmeldelsene (ikke av eierne av selskapet, selvfølgelig, men av de ansatte i Runet -speilet) og åpenbar spam eller tull elimineres.

Ved å klikke på anmeldelsene blir du ført til organisasjonens kort, hvor du kan lese dem og, hvis du ønsker det, la ditt eget være. Det kan også være tilleggsinformasjon om dette selskapet.

Lage kart i Yandex, ruter og mobilapplikasjoner

Vi har beskrevet tre hovedkilder hvorfra Yandex får informasjon når de søker etter geografiske objekter. Men det er også en fjerde. Dette er de såkalte taggene som brukeren legger igjen på den såkalte "Kortene mine" ved å lagre dem med muligheten til å få offentlig tilgang til dem. Forstår du hva jeg snakker om? Hvis ikke, vil jeg bokstavelig talt i et par avsnitt prøve å holde meg innenfor forklaringene.

I den venstre kolonnen er det en fane "Mine kort". Essensen ligger i det faktum at her kan du lagre alle etikettene, valgene, asfalterte ruter og andre ting du opprettet på Yandex Maps. Personlig markerte jeg stedene der jeg klarte å sykle i nærheten av bostedet.

Du kan imidlertid sette et merke, velge hvilken som helst bygning (plotte en rute) og skrive at firmaet ditt ligger der, og legge til de nødvendige taggene i beskrivelsen søkeord(i dette tilfellet vil det ikke være nødvendig å bekrefte informasjonen), fordi det er en mulighet for at denne informasjonen vil bli tatt i betraktning når du søker på Yandex Maps. I dette tilfellet ville det være bedre å lagre kartet som offentlig (merket "alle") i skjermbildet ovenfor.

Les detaljene i artikkelen om å få gratis kommersiell trafikk fra Yandex Maps, som ble utgitt av forfatteren av Mystery Online -bloggen. Den beskriver noen av triksene som fungerte, i hvert fall på tidspunktet for denne skrivingen.

Selv om muligheten til å lagre de opprettede etikettene og merkene kan være nyttig, som jeg nevnte, bare for personlige formål. I dette tilfellet er det best å lagre kortene etter å ha godkjent Yandex tidligere, slik at du senere kan redigere dem, lagre et ubegrenset antall brikker og også markere dem som personlige (bare for meg) eller som smalt målrettet (bare ved lenken du informerer om, og når du ser listen over kreasjonene dine av en annen bruker, vil den ikke være synlig).

Hvis du vil videresende til noen lenke med asfaltert rute, så kan du bruke knappen i øvre høyre hjørne av "lenken", der du i tillegg til den vanlige hyperkoblingen også får tilbud om å dele en lenke til kartet du har opprettet i populære sosiale nettverk.

Siden vi snakker om legge en rute på Yandex Maps, så vil jeg si noen ord om dette. Praktisk ting. Når det ikke var bil, var det viktig å plotte en offentlig transportvei til et ukjent sted.

Yandex snakket om hvilken buss eller trolleybuss du skulle ta til nærmeste metro, snakket om transport når du kjører under jorden, og sendte deretter også ut hvordan du kommer til endepunktet opp til antall meter som må gås.

I tillegg advarer Yandex Maps også om tiden som antas å ta denne pilegrimsreisen, og tilbyr til og med alternative ruter for vurdering.

Da en bil dukket opp, ble det enda mer relevant å bruke ruting, fordi situasjonen med trafikkork noen ganger gjør alvorlige justeringer. For å gjøre dette, bare skriv inn to adresser (start- og sluttpunkt) i den venstre kolonnen, eller bare sett disse punktene på diagrammet med musen (det første klikket er begynnelsen på ruten, det andre er slutten).

For å telle trafikkork, merker du av i den tilsvarende boksen og til endre ruten på et eget sted, vil det være nok å klikke på dette stedet med venstre museknapp, og når en hvit sirkel vises, ta den og dra den til ønsket veikryss eller spor. Det er sant at hvis du justerer ruten manuelt på Yandex -kartet, vil trafikkork ikke lenger fungere - alt er under ditt ansvar.

Forresten, siden vi snakker om det åpenbare, vil jeg spørre deg, hvor mange måter kan du endre skjermskalaen? Personlig visste jeg bare om pluss- og minusknappene (og glidebryteren mellom dem) i øvre venstre hjørne, og om rotasjonen av musehjulet. Men det viste seg at dobbeltklikk med høyre og venstre museknapp også lar deg leke med detaljer, noe som noen ganger kan være praktisk.

Men det er selvfølgelig interessant å legge ruter og trafikkork hjemme, men oftest bruker vi det Yandex mobilapplikasjoner(Kart, Navigator eller Metro). Det første programmet, tror jeg, er installert på 90% av telefonene i store byer i Russland, der enorme trafikkork er til vane. Det er forståelig, fordi det er praktisk, raskt og pålitelig. Denne shnyaga har ikke alvorlig sviktet meg ennå.

Mobilapplikasjoner blir helt gratis nedlasting fra det offisielle nettstedet eller for å gjenkjenne den oppgitte QR -koden, med en lenke for å laste ned filen med mobiltelefon (du bør ha et program på det som hjelper):

Mobile Yandex.Maps har veldig lik funksjonalitet som den elektroniske versjonen (trafikkorker, ruting, søk), men for turer på en ukjent rute er selvfølgelig Navigator best egnet, hvis generelle prinsipp er godt vist i denne videoen :

Selv om jeg personlig beholder Navigator med Yandex Maps på telefonen min som et alternativ for sikkerhetskopiering, fordi den tynne Garmin med en fantastisk skjerm, stemmestyring og vakre kart over Russland passer meg helt, bortsett fra at bare trafikkork ikke alltid er lastet på den på en betimelig måte, fordi radiokanalen brukes til dette, og når hele Moskva er verdt det, må du kringkaste mye, og til turen kommer til området du reiser i, kan alt endres ti ganger.

Api Yandex kart og konstruktør for deres opprettelse

Vel, det er gjort med de generelle spørsmålene, nå er det på tide å gå videre til praksis, nemlig hvordan man lager i konstruktøren og sett inn et kart fra Yandex på nettstedet ditt... Faktisk er det både enkelt og vanskelig på samme tid.

Hvis du har et visittkort, en blogg eller en enkel nettbutikk med et omfattende nettverk av kontorer, vil de grunnleggende egenskapene til en designer være nok for deg, og til og med en amatør kan sette inn koden på nettstedet.

Egentlig er det en veldig god video som vil hjelpe deg å ta en beslutning om behovet for å bry deg med alt dette - Hvordan forbedre nettstedet ditt ved å bruke Yandex.Maps API(i eksempler):

Hvis du nærmer deg saken grundig, kan et korrekt opparbeidet rutekart eller beregning av leveringskostnader basert på plasseringen spesifisert av brukeren forbedre brukervennligheten betydelig og til slutt gjøre den besøkende til en kjøper.

For detaljer, se videoen, som forteller hvordan du kan forbedre nettbutikken din med kart:

Det er en annen sak hvis du trenger å gå utover de grunnleggende rammene for Yandex Maps -konstruktøren og skape noe som kan sammenlignes i storhet med dekningssystemene til ledende mobiloperatører, en liste over alle Kiwi -minibanker, situasjonen med trafikkork i ditt område, etc. av ting. Her trenger du en programmerer som kan JavaScript.

Yandex.Maps API for eksempel lar deg legge et lag med trafikkork på nettstedet ditt, men for dette vil funksjonene til den innebygde konstruktøren dessverre ikke være nok, og du må bruke tjenestene til en spesialist som kan JavaScript , som bare trenger å gjøre deg kjent med API -dokumentasjonen.

Ja, begrepet API (applikasjonsprogrammeringsgrensesnitt) i seg selv betyr å få muligheten til å bruke en slags programvare, uten å vite i det hele tatt hvordan det fungerer, men ha en beskrivelse av de verktøyene (pennene) som er nødvendige for å koble den til og implementere visse funksjoner . Denne tingen er utbredt og brukes ofte.

Yandex Maps API er beskrevet på lenken gitt ovenfor, men det er også en enkel konstruktør som lar deg raskt lage et kart over området du trenger, sette de nødvendige etikettene med beskrivelser på det, markere de nødvendige objektene og vise stien som det er lettest å komme til dem for eksempel fra nærmeste t -banestasjon.

Kartkonstruktør i Yandex

funksjon tollskriftskortkode ($ atts, $ tekst) (global $ post; retur get_post_meta ($ post-> ID, $ tekst, true);) @add_shortcode ("tollskrift", "tollskrift_kortnummer");

Etter det kan artikkelen eller den statiske siden være sett inn koden som er oppnådd i Yandex maps constructor, ved å bruke følgende konstruksjon, der du i stedet for "yandexmap" setter inn identifikatoren du bruker:

Nå er du ikke redd for den visuelle redaktøren, som er klar til å kutte alt som skiller seg fra HTML -koden. Hurra. Hvis du trenger å sette inn instruksjonene i bloggrammen (topptekst, sidefelt eller bunntekst), kan skriptet settes inn der direkte, men du må velge den du vil ha, slik at kartet vises der du vil. Les om formålet med maler på lenken.

Å sette inn API -kart fra Yandex til et nettsted som administreres av Joomla det vil være mulig å bruke den samme, men først deaktiver den visuelle editoren slik at koden igjen ikke blir kuttet av den. Etter innsetting kan redaktøren slås på igjen.

Hvis du trenger å legge til en veibeskrivelseskode i en Joomla -artikkel, kan du ganske enkelt lime den inn med den visuelle redigereren deaktivert, eller sette inn innholdet i en vilkårlig kodemodul ved hjelp av plugin -funksjonene.

I dette tilfellet må modulen med Yandex-kortkoden plasseres i en ikke-eksisterende posisjon i malen (det er banalt å skrive noe som yandex-karta i posisjonsvalgfeltet i modulinnstillingene for en vilkårlig HTML-kode). Og da, allerede når du skriver eller redigerer artikler, kan du sette inn strukturen på rett sted:

(loadposition yandex-karta)

Forresten, hvis denne metoden plutselig ikke fungerer for deg, kan du gå til plugin manager (fra Joomla admin panel, velg menyelementene "Extensions" - "Plugin manager") og finn og deretter aktivere "Content - Load Module ". Den er inkludert i standard Joomla -pakken, så du må ha den.

Her er det også verdt å si at du kan trekke ut ordningen og sette den inn på nettstedet ditt fra "Mine kort" nevnt like ovenfor. Husk, jeg sa der at du kan få en lenke til det lagrede skjemaet, i tillegg til dette kan du også få YMapsML -fil, som du enkelt kan knytte til nettstedet ved å koble API -et til det på forhånd.

For å koble til Yandex Api, vil det være nok å plassere følgende skriptanrop mellom hodemerkene (du kan finne dem i tilfellet Joomla eller WordPress på samme måte som beskrevet i artikkelen om) følgende skriptanrop:

Vel, på riktig sted (hvor stedskartet skal settes inn og vises), vil det være nok å sette inn:

Vi vil anta at vi på en eller annen måte har funnet ut av det med opprettelsen av de enkleste veibeskrivelsene og sette det inn på nettstedet vårt. Hva blir det neste? Sannsynligvis er det verdt å si noen ord om mer komplekse versjoner av Yandex Maps API, som ikke lenger er underlagt den nevnte konstruktøren, men på den annen side er en person som er kjent med JavaScript -språket ganske dyktig.

I dette tilfellet, før du åpner alle funksjonene til Yandex Maps API som er beskrevet på lenken. All nødvendig dokumentasjon er der, og jenta fra denne videoen vil bringe deg oppdatert:

Flott, gi disse materialene videre til programmereren din, så vil han gi deg noe slikt (om nødvendig):

Slik setter du inn Yandex Maps i WordPress og Joomla ved hjelp av utvidelser

I prinsippet bør konstruktørfunksjonene beskrevet like ovenfor være tilstrekkelig i de fleste tilfeller. Det er imidlertid noen utvidelser som lar deg sette inn et kart fra Yandex på nettstedet ditt og legge til de nødvendige forklarende etikettene.

En liste over slike utvidelser finner du på det offisielle nettstedet. Hvis vi vurderer WordPress, så er det etter min mening bare en plugin for den som heter Yandex Maps for WordPress, som kan lastes ned gratis på den angitte lenken. Den installeres og aktiveres på en standard måte.

Det eneste som ser ut som det er litt utdatert og fortsatt krever å skrive inn API -nøkkelen for driften, metoden for å skaffe som jeg skrev litt høyere. Du må skrive inn denne nøkkelen på siden "Plugins" - "Yandex Maps". Etter det, på sidene for å lage eller redigere artikler, kan du finne nederst på skjemaet for dataregistrering for å motta Yandex Maps -koden.

I boksen øverst skriver du inn en tittel for infomeldingen som peker til ønsket plassering i diagrammet. Deretter skriver du inn adressen til stedet der pekepilen vil se ut. Deretter fyller du ut feltet med en beskrivelse, angir dimensjonene til det innsatte kartet horisontalt og vertikalt, og setter også en hake slik at skalaen for å endre skala og velge type (skjema, satellitt, etc.) vises.

Flytt deretter markøren (klikk med musen) til stedet for artikkelen der du vil sette inn Yandex -kartet, og klikk på "Send kart til redaktør" -knappen. Som et resultat får vi noe som ligner på dette:

Det er riktignok ingen paneler med zoom og valg av korttype, men ellers er alt riktig. Jeg får vist et skjermbilde fra en annen blogg av meg, for i dette var det en liten konflikt med CSS -stilene (gjennom min feil), som jeg ikke ønsket å fikse nå.

Det er flere utvidelser for Joomla av denne typen, ingen som jeg noen gang har prøvd. Derfor vil jeg bare liste dem opp og gi lenker til artikler, som i detalj beskriver deres evner og hvordan du bruker dem til å sette inn et kart på nettstedet ditt.

I dag har vi en av de viktigste oppdateringene til Yandex.Maps i sin historie. For det første kombineres Folkets kart med det viktigste, noe som betyr at alle raskt og enkelt kan legge til sitt eget hus på kartet eller rette unøyaktigheter. Resultatene av endringene vil være tilgjengelige for alle - på Yandex.Maps, så vel som i Mobile Maps og Navigator. Og for det andre mottok Yandex.Maps et nytt grensesnitt, betaversjonen som vi en gang snakket om på Habré i de tidlige stadiene av arbeidet med det (tusen takk for alle kommentarer og råd som da ble uttrykt).

Under kuttet vil jeg fortelle deg om hvordan vi jobbet på grensesnittet, hvordan vi løste problemet med å raskt laste inn objekter i nettleseren, fant opp og implementerte nye verktøy som skulle beskytte brukerredigeringer, hvordan vi i det hele tatt gjorde et nytt liv mulig , og hvorfor kart nå vil oppdateres raskere enn noensinne og fremdeles være nøyaktige og mer.

Den første versjonen av People's Maps ble lansert for nøyaktig fem år siden - 8. april 2010. På den tiden var Yandex.Maps helt avhengig av leverandørene av kartdata. Ved å lansere Folkekartet ønsket vi å gi folk muligheten til å påvirke fullstendigheten og kvaliteten på data uavhengig av hverandre. Virkeligheten har overgått alle våre forventninger: I løpet av disse fem årene, gjennom innsats fra brukerne, har mange byer og tettsteder i Den russiske føderasjon og i nærheten blitt trukket. Når nye utvekslinger åpnes, gjøres korreksjoner på kartet i løpet av dagen, og oftest - om en time.


Slik så den første versjonen av People's Map ut i 2010

Men verden står ikke stille, og den neste utfordringen ventet på oss - å lage et verktøy fra People's map, ved hjelp av hvilke selv folk som ikke er fortrolige med kartografi kan lage profesjonelle kart som er egnet for bruk i bilruting.

Men da vi satte oss et slikt mål, var vi klar over oppgavene vi måtte løse. For det første for å gjøre grensesnittet til det nye folkekartet så intuitivt og brukervennlig at alle kan jobbe med det. For det andre måtte jeg lære å redigere veldig store objekter i nettleseren. På det gamle folkekartet, når nettleseren lastes inn med et stort antall noder (> 20K), fryser nettleseren. I det nye folkekartet, slik vi tenkte det, er dette uakseptabelt.

Og for det tredje, siden vi etter dagens endringer tillater folk å redigere data, som deretter vil bli sett av titalls millioner Yandex.Maps -brukere, er det nødvendig å på en mer pålitelig måte beskytte resultatene av arbeidet til "folks" kartografer mot useriøse brukere , som vi kaller vandaler.

Arbeid med grensesnittet

I prosessen bestemte vi at vi har to grupper av brukere:
  • nybegynnere som aldri har prøvd å redigere et kart;
  • erfarne brukere, som inkluderer kartografer og aktive brukere av People's Map.
For oss betydde dette at grensesnittet skulle være enkelt og greit for det første, og skulle oppfylle kravene til fleksibilitet og enkel redigering av erfarne brukere. Men hvordan kan dette oppnås?

Vi antok at grensesnittet skulle være todelt. Det første nivået er for helt nye brukere, slik at de kan fullføre enkle scenarier, og det andre nivået er for avanserte brukere, når det er nødvendig å gjøre noe mer komplekst. Jeg skal gi eksempler nedenfor.

For å teste denne hypotesen studerte vi brukerøkter på People's Map og fant ut at følgende skiller seg ut blant de mest populære scenariene for å lage og redigere data:

  • redigere organisasjonen;
  • redigering av bygningen og adressen;
  • redigering av enkle arealobjekter (park, plen, skole eller barnehageområde);
  • redigering av veier.

Og siden disse scenariene begynner å bli kjent med redigering av et kart, betyr det at de skal være superlogiske og intuitive. Hvis en person forstår dem, og han fortsatt er interessert i å redigere kartet, kan han klikke på "Vis mer" -knappen. Etter dette klikket vil brukeren finne flere verktøy som han må finne ut av - les instruksjonene, spør råd fra mer erfarne brukere.

I prosessen med å designe brukergrensesnittet møtte vi umiddelbart behovet for dynamiske prototyper. Det viste seg å være veldig vanskelig å diskutere komplekse redigeringsscenarier med statiske oppsett i hånden. Mange spørsmål dukket opp som: "Hva vil skje hvis jeg trykker på denne knappen og gjør dette?" Når det er mange scenarier og de forgrener seg og krysser hverandre for hvert knappetrykk, er "dynamiske prototyper" en god løsning. De hjelper til raskt og visuelt å demonstrere hvordan brukerens interaksjon med grensesnittet skal forekomme.

Vi begynte å teste brukergrensesnittet med dem. Våre første fag var våre utviklere. Så snart vi viste dem ønsket brukerinteraksjon med produktet vårt, hørte de: “Vi forstår ikke hvordan vi skal gjøre denne magien. La oss gjøre det enkelt fra et utviklingssynspunkt først, og så prøver vi å forenkle grensesnittet for brukerne. "

Enhver løsning er bedre enn ingen. Derfor redigerer vi alle prototypene på grensesnittene til en implementering som vi forstår. Som et resultat har vi en prototype der alle data redigeres, men noen steder er det upraktisk og ulogisk.

La oss forklare bedre med et eksempel. La oss ta Baikal -sjøen. Hvor praktisk er det for en enkel bruker å redigere? Baikal er et arealobjekt, så det er naturlig å redigere det som et arealobjekt. Men det er et problem - Baikal består av 527 lukkede konturer (selve konturen pluss de utskårne øyene), mer enn 59.200 noder og har dessuten felles grenser til mange elver.

Hvis du prøver å laste ned alle disse dataene fra serveren til brukeren til nettleseren, vil alt fryse. Derfor presenteres alt i dataene våre litt annerledes.

Det er et hydrografisk objekt "Baikal -sjøen", som bare har et navn og ingen geometri.


Når du velger et objekt, vises alle konturene

Det er lukkede konturer knyttet til dette objektet, som representerer innsjøens ytre kontur og skjærer hull for øyene. De har attributtet "ekstern" eller "intern" (kontur), men har heller ikke sin egen geometri.

Vær oppmerksom på at jeg bare valgte en oversikt - uthevingen av alle de andre forsvant

Alle disse konturene er sammensatt av en eller flere ofte flere hydrografiske grensesnitt som representerer den faktiske geometrien.


En av delene av den ytre konturen av Baikalsjøen er markert på bildet.

Dette betyr at for å lage en slik innsjø, må vi:

  • tegne de faktiske grensene for innsjøen og alle øyene;
  • lag et objekt "Baikal -sjøen" og legg til konturene som er samlet fra de tidligere tegnede delene av grensene.

Slik ser og lager kartografene våre data. Og vi valgte dette alternativet for å redigere data som et utgangspunkt for en trinnvis forbedring av grensesnittet.

I det øyeblikket da den første versjonen av redigeringsgrensesnittet ble utviklet og tatt opp på testtjenesten, gikk hele teamet vårt for å teste det. Basert på testresultatene kom vi sammen igjen og diskuterte hva som kan forbedres på denne måten å redigere.

Det første vi bestemte oss for var at tegning av Baikal er et sjeldent tilfelle, og det er mer sannsynlig at en nybegynner bruker å tegne noe enklere. For eksempel en lokal dam. Og dette er et trivielt tilfelle, og dammen vil bestå av ett hydrografisk objekt, en kontur og en seksjon grenser. Så la oss i slike tilfeller lage det som et enkelt arealobjekt uten alt dette maset med deler av grenser og konturer, og vi vil lagre det som tre separate objekter (hydrografisk objekt, kontur, kant). Ikke før sagt enn gjort.


Opprettelse av objektgrense, kontur og hydrografisk objekt i ett trinn

Og hvis det viser seg å lage trivielle objekter på denne måten, så la oss redigere trivielle objekter på samme måte. Klar!


Redigere en funksjon som består av en funksjonsgrense, en kontur og en hydrografisk funksjon

Fint! Og la oss også redigere objektene som består av en kontur, men flere seksjoner.


Redigere en funksjon som består av tre funksjonsgrenser, en kontur og en hydrografisk funksjon

Fint. Og la oss også redigere objekter med "felles grenser", og de som har mange konturer. Men her vil det ikke fungere. Når det gjelder et objekt som har grenser til felles med andre objekter, vet vi ikke hva brukeren ønsker å gjøre - flytte den felles grensen eller koble objektet fra denne felles grensen. Og når det gjelder objekter med et stort antall konturer, er det nødvendig å forstå hvilken kontur brukeren nå vil redigere. Dette betyr at det er nødvendig å tenke over scenariene for disse sakene og implementere valg- og redigeringsverktøyene.


Dam, som har en ytre kontur, flere indre og ytre konturer har en felles kant med kanalen

Ok, nå forstår vi hvor grensen ligger mellom enkle og komplekse redigeringsscenarier. Men vi har allerede implementert enkle saker, og ... du vil ikke tro, de ser nesten slik de utformet grensesnittene helt i begynnelsen av prosjektet. Det er bare det at magi har blitt forståelig og realiserbar.

I løpet av den følgende forskningen fant vi ut hvordan vi kan gjøre komplekse og komplekse dataredigeringsscenarier klare, men løsningen viste seg ikke å være så elegant som vi ønsket. Vi lærte hvordan vi oppdager når en bruker står overfor et komplekst scenario. Tjenesten tilbyr å bli kjent med reglene for redigering av tilgrensende objekter, og til og med spør brukeren om hvor det kan ha oppstått en feil.


Det vises en feil med en lenke til dokumentasjonen og en markør der feilen ble funnet

Nedlastningshastighet

Vi fant ut de grunnleggende grensesnittene, men ved å fortsette samtalen om Baikal -sjøen, må vi forstå hvordan vi vil redigere det hvis datamaskinen allerede fryser fra 20K noder lastet inn i nettleseren?

La oss løse dette problemet i etapper også. Du kan redigere attributter og geometri, og hvis det er mange konturer, kan du i ett trinn bare regne ut geometrien til en kontur:


Redigering er bare tilgjengelig fra en viss skala på kartet, og brukeren blir bedt om å velge geometrien for konturen han vil redigere

Så når brukeren velger en kontur for redigering, utløses "magien" igjen - hvis konturen er liten (for eksempel den indre konturen for øya), laster vi den helt inn og lar den redigeres som et enkelt område gjenstand.


Saken om redigering av et enkelt konturobjekt

Og hvis konturen er veldig stor, laster vi bare de synlige delene av grensene og lar dem redigeres. Hvis brukeren flytter kartet og det bare er nye seksjoner av grenser på det, vil vi også laste dem inn for redigering. Dermed kan brukeren redigere komplekse objekter i en nesten enkel modus uten å legge merke til det.


Lastet bare en del av grensen til objektet fra settet

På denne smarte måten gikk vi forbi nettleserens begrensninger - hastigheten på å laste inn data for redigering og begrensningen på antall samtidige poeng som er tilgjengelig for den.

Beskyttelse av redigeringer

Den neste viktige oppgaven for oss var å gjøre tjenesten motstandsdyktig mot brukere som ødelegger data. I det gamle folkekartet er det allerede iverksatt tiltak for å motvirke dem. Men i den nye kan hvem som helst redigere dataene som brukes av titalls millioner brukere. Vi må gjøre vårt beste for å sikre at de ikke kan bli bortskjemt.

For å gjøre dette endret vi moderasjonssystemet for alle brukerredigeringer-fra ettermoderasjon til forhåndsmoderasjon. Det vil si at fra og med i dag vil alle redigeringer i People's Map være gjenstand for obligatorisk verifikasjon av moderatorer. Vi håper at dette vil forbedre kvaliteten på dataene ytterligere.

Vi har ikke en oppgave å tilbakestille alle data til en bestemt dato eller revisjon, vi har en oppgave - å slette bare en del av brukerredigeringene, samtidig som vi beholder resten, og til og med bevarer integriteten til dataene. Resultatet var vår interne utvikling av datalagring, revisjoner og egen presentasjon.

En av de viktige fordelene med systemet vårt er at vi har lært å kontrollere dataintegriteten godt. For eksempel redigerer jeg en del av en vei og endrer geometrien.


Rediger geometrien til veistrekningen direkte

Så går jeg til en naboknute, hvor flere veistrekninger krysser hverandre, og prøver å redigere den, men indirekte korrigerer jeg geometrien til den forrige delen.


Redigere indirekte geometrien til et veistrekning

Dette betyr at jeg har to relaterte redigeringer. Hvis vi ikke visste hvordan vi skulle kontrollere og versjonere slike indirekte redigeringer, ville vi ikke kunne returnere objektet til tilstanden det var før de indirekte redigeringene. Dette betyr at det ville være nødvendig å forby alle indirekte redigeringer på toppen av direkte.

I prinsippet er det ingenting galt med en slik løsning, noen karttjenester gjør nettopp det. Men en slik løsning utelukker fullstendig muligheten for å redigere et veikryss, siden når du redigerer en veikart, skjer det alltid indirekte endringer i data.

Et annet viktig tema knyttet til dataversjonering er den visuelle representasjonen av diff -redigeringer. Du kan alltid se hvordan den siste versjonen av objektet ser ut, men for praktisk moderering er det viktig å se hvordan objektet så ut før og etter redigering. Det er spesielt viktig å gjøre en diff som dette for objektets geometri:


Slik ser den geometriske og attributive forskjellen ut for redigeringene jeg gjorde for å demonstrere direkte og indirekte redigering av et objekt.


Men jeg var ferdig med å tegne gangveien, som kuttet veien i to seksjoner.


Og slik ser diff ut for enkle gjenstander som en bygning.

Denne visuelle representasjonen av redigeringer gjør det raskere og lettere å forstå hvem som redigerte hva og hvordan.

Som et resultat klarte vi å implementere et enkelt og intuitivt grensesnitt for brukere som ikke er kjent med kartografi og ikke ønsker å forstå datastrukturen. Samtidig laget vi et praktisk og fleksibelt grensesnitt for erfarne brukere. Underveis lærte vi å redigere veldig store og "tunge" objekter i nettleseren og sette alle brukerredigeringer under versjonskontroll.

Og alt dette for å gjøre det enda mer praktisk for brukerne å dele sin kunnskap om området med andre.

Relaterte artikler: