MKMapView zoom és régió

szavazat
83

Tisztában vagyok a Google Maps JavaScript API. Nemrég kezdtem el használni MapKit kereteit iphone projekt, de én egy nehezen kitalálni nagyítás és beállít egy régiót a térképen.

A Google Maps API szoktam használni egész zoom szintet, mint a 8, 9, 10 együtt egyszerű funkció setZoom (). Az egyetlen egyenértékű módszer látom a MapKit keret setRegion: animált. Ha jól értem, azt be kell állítani a régió span szélességi és hosszúsági „delta” értékek megadásához nagyítási szinten. De én tényleg nem egy ötlet, amit ezek az értékek jelentik (olvastam a dokumentációt).

Ha használom a MKMapView megbízottja és a nyomelemek a span értékeket regionDidChange megbízottja eljárás eredménye úgy tűnik, nem korrelál egymással. Ez rendben van, ha én kicsinyíteni, és látni a span delta értékek növekvő meghatározott dokumentációt. De hirtelen húzza a térképet, és nem nyitja és delta értékek válnak 0.0.

Tud valaki kérem magyarázza, mi a referenciapont ezekhez span és delta? Vagy van olyan algoritmus, átalakítani egy egész nagyítási szinten (például 9) Ezen delta értékek?

Mint egy bónusz kérdés van-e módja annak, hogy adjon meg egy minimum-maximum nagyítási szinten egy MKMapView :)

Kösz

A kérdést 22/07/2009 17:16
a forrás felhasználó
Más nyelveken...                            


5 válasz

szavazat
133

Először is, MKMapView nem használ / van egy előre meghatározott nagyítási szinteken, mint a Google Maps nem.

Ehelyett, a látható terület egy MKMapView alkalmazásával ismertetjük MKCoordinateRegion , amely két érték:

  1. központ (a középpont a régió), és
  2. span (a méret a látható terület körül központ).

A középpont nyilvánvalónak kell lennie (ez a középpont a régióban.)

Azonban, span (ami egy MKCoordinateSpan ) áll:

  1. latitudeDelta (a függőleges távolság által képviselt régió), és
  2. longitudeDelta (vízszintes távolság által képviselt régió).

Egy rövid példa. Itt egy játék MKCoordinateRegion:

  1. központ:
    • szélesség: 0
    • hosszúság: 0
  2. span:
    • latitudeDelta: 8
    • longitudeDelta: 6

A régió tudtunk leírni annak min és max koordináták a következők:

  1. min koordináta (bal alsó pont):
    • szélesség: -4
    • hosszúság: -3
  2. max koordináta (jobb felső pont):
    • szélesség: 4
    • hosszúság: 3

Így megadhatja nagyítási szinten egy középpont körül segítségével egy megfelelő méretű MKCoordinateSpan. Közelítő Google numerikus nagyítási szinteken, akkor fejtheti vissza a span méretben, hogy a Google egy adott nagyítási szinten és hozzon létre egy span, ennek megfelelően. (Google leírja Véleményük régiói azonos módon, hogy MKMapView csinál, mint a központ + span, így ki lehet húzni ezeket az értékeket ki a Google Maps.)

Ami korlátozza a régióban, akkor lehet játszani w / az küldötte módszer:

mapView:regionWillChangeAnimated

például átméretezés régió vissza az engedélyezett nagyítási szinteken. (Olyan, mint a hogyan asztal nézetek segítségével lépjünk túl a szélén, de aztán gumiszalagot vissza a helyére.) Ugyanakkor a kilométeróra változhat, mivel én még nem használtam erre a célra.

btw, vannak határozott javítások / fejlesztések OS 3.1 szempontjai MapKit amelyeket ad nekem gondot 3.0.

Válaszolt 22/07/2009 20:36
a forrás felhasználó

szavazat
117

Ha inkább explicit nagyítási szinteken helyett meghatározó MKCoordinateSpan, írtam egy kategória, amely támogatást nyújt a zoom szintet egy MKMapView. A kód található itt .

Válaszolt 23/01/2010 03:49
a forrás felhasználó

szavazat
4

A span fokban szélességi és hosszúsági. Van egy eljárást MKCoordinateRegion struktúrákat vevő távolság helyett. Lehet, hogy az Ön által használt MKCoordinateRegionMakeWithDistance adja meg a span, majd amikor ellenőrzi azt regionDidChange, látsz a lat / hosszú span, ami így is van tárolva egy MKCoordinateRegion struct.

Amennyire én tudom, az egész nagyítási szinten nem állnak rendelkezésre, vagy hasznos egyáltalán, ha dolgozik MKMapKit. Én személy szerint inkább a span számok, sokkal rugalmasabb.

Nem adhatja meg max és min zoom, és nem tudom a módját, hogy csapkod, hogy az. MKMapKit valójában nagyon gyenge most vagyok csalódott a hiányzó funkciók.

Válaszolt 22/07/2009 19:09
a forrás felhasználó

szavazat
3

Egy gyors összehasonlítását nagyítási szinteken a helyeket maps.google.com vizsgálatával linkre lekérdező mutatja, hogy a dx és dy span értékek növekedése faktorral 2:

 (0.005334, 0.011834) starting span
 (0.010668, 0.023668) dx: x2, dy: x2 
 (0.021335, 0.047337) dx: x2, dy: x2
 (0.042671, 0.094671) dx: x2, dy: x2
  ...
Válaszolt 11/12/2009 01:30
a forrás felhasználó

szavazat
2

Brant a kategóriában MKMapView jól működik. Úgy tűnik azonban, hogy nem frissült, hogy támogassa újabb készülékek retina képernyők kiszámításakor mapSizeInPixels.

Meg lehet rögzíteni helyett ezt a sort:

CGSize mapSizeInPixels = mapView.bounds.size;

Ezzel a sort:

CGSize mapSizeInPixels = CGSizeMake(mapView.bounds.size.width * [UIScreen mainScreen].scale, mapView.bounds.size.height * [UIScreen mainScreen].scale);
Válaszolt 19/06/2014 16:43
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more