2010-12-10 6 views
2

Ok, also ich habe einige ähnliche Fragen zu diesem Thema gesehen, aber ich kann keine finden, die die Frage wirklich beantworten.Gibt es eine Möglichkeit, eine MKMapView zu drehen und trotzdem das Google Logo zu zeigen?

ich drehen (oder möchte) eine MKMapView:

[mapView setTransform:CGAffineTransformMakeRotation(angle)]; 

Dies funktioniert gut, außer, dass das Google-Logo mit ihr gedreht wird, was ich höre, ist ein nein nein. Außerdem möchte ich meinen mapView tatsächlich größer machen als den Bildschirm, so dass der gesamte Bildschirm bei einer Drehung immer noch die Karte anzeigt, aber das würde auch das Google Logo vom Bildschirm entfernen.

So ist es möglich, eine MKMapView und noch zeigen das Google-Logo drehen ??? Vielleicht kann ein Anruf für einige Google Web AP

+0

Hey Fraggle, hast du deine App endlich mit verschobenem Logo eingereicht? Ist es durchgegangen? Ich bin gerade in einer ähnlichen Situation, muss Google Logo bewegen, aber ich frage mich, ob es meine Zeit wert ist, das zu tun, oder ich sollte einfach die offene Straßenkarte sofort benutzen. – ayoy

+0

Ja, ich habe es getan. Stellen Sie nur sicher, dass das Google Logo immer noch an der richtigen Stelle angezeigt wird. Also Google Logo ist nicht "bewegt" sieht immer noch gleich aus. Die Karte wird jedoch gedreht. – Fraggle

Antwort

2

So herausgefunden habe ich eine Möglichkeit, dies zu tun, auch wenn ich seine immer noch das Gefühl, ein bisschen wie ein Hack, weil Apple in zukünftigen Releases Dinge ändern könnte, die diese Technik durchbrechen.

MKMapView hat 2 Subviews. Eine davon ist eine UIImageView, die das "Google" -Bild für Urheberrechtszwecke enthält.

So in IB können Sie Ihre eigenen UIImageView-Setup, das an der unteren linken Ecke sitzt und in Code können Sie sein Bild gesetzt das gleiche Bild wie das in der UIImageView innerhalb der Kartenansicht zu sein:

-(void) getImage { 
    for(UIView *v in mapView.subviews) { 

     if([v isKindOfClass:[UIImageView class]]) { 
      NSLog(@"%@",v); 
      self.cpyView.image=((UIImageView *)v).image; 
     } 
    } 

} 

Jetzt, wenn Sie Ihre MKMapView drehen, wird Ihre UIImageView nicht gedreht.

Nun ist der andere Trick hier ist die MKMapView in einer anderen Ansicht eingebettet zu haben (viewForMap) (Idee von Anfang iOS entlehnt 4 von Wei-Meng Lee).

Drop ein UIView in IB und Größe an die Größe wollen Sie die sichtbare Karte zu sein. Stellen Sie es so ein, dass Unteransichten in IB abgeschnitten werden.

In Code Sie Alloc] Initwithframe eine MKMapView, so dass die MKMapView auf dieser viewForMap zentriert sitzt, ist aber größer, als es.

Zum Beispiel, wenn Ihr viewForMap 320, 372, dann tun:

mapView=[[MKMapView alloc] initWithFrame:CGRectMake(-90,-64,500,500)]; 
mapView.mapType=MKMapTypeHybrid; 
mapView.delegate=self; 
[viewForMap addSubview:mapView]; 

Jetzt können Sie Ihre Karte drehen mapView.transform=CGAffineTransformMakeRotation(-M_PI/2);

Ihre UIImageView, die das "Google" Bild hält wird nicht gedreht werden, damit es sichtbar bleibt. Das "Google" -Bild in der MKMapView wird nicht angezeigt.

+0

Ihr erster Vorschlag hier ist in meinem Fall interessant ... In meinem Fall habe ich ein UIImageView oben auf der Karte platziert und es scheint, dass es teilweise das Google-Logo abdeckt. Ich werde versuchen, das Google-Bild selbst zu verschieben, ohne irgendwo ein neues hinzuzufügen. Ich lege es einfach in die obere linke Ecke und stelle den Rahmen ein. Hoffe das geht gut. :-P Ich nehme nicht an, dass irgendjemand das ausprobiert hat und damit durchgekommen ist? – Jonny

+0

Diese Lösung funktionierte perfekt in iPhone, aber es zeigt nicht das Google-Logo in iPad-Version. Irgendeine Idee warum? – Jorge

+0

@Jorge -> Denken Sie daran, dass Apple Google Maps nicht als seinen Provider in iOS 6 haben wird, der WIRKLICH bald herauskommt. Um mit Fraggle

0

Sie dies tun:

  1. Machen Sie ein Bild "Google" Logo in jedem Bildbearbeitungsprogramm.
  2. die Größe Ihrer MKMapView erhöhen, das das Logo hätte nicht gesehen.
  3. Fügen Sie MKMapView eine Unteransicht Ihres Bildes hinzu.

Wenn Sie ohne das Logo von Google tun werden, wird Ihre Anwendung nach abgelehnt werden die folgenden:

8.6 Google Maps und Google Earth Bilder über die Google Maps API erhalten wird, kann in einer Anwendung verwendet werden, wenn alle Markenmerkmale des ursprünglichen Inhalts unverändert und vollständig sichtbar bleiben. Apps, die das Google-Logo oder Copyright-Inhaber Identifizierung verschleiern oder modifizieren wird

Und das Beste ist, verwenden Sie diese abgelehnt werden: http://wiki.openstreetmap.org/wiki/IPhone

+0

Richtig, das ist sicherlich ein Ansatz. Aber ich habe auf etwas gehofft, das vielleicht zu diesem Zweck in den Rahmen gestellt wurde. Als ich meine App debuggte, bemerkte ich, dass der mapView 2 Unteransichten hat, von denen eine eine Frame-Größe und einen Ursprung hat, der aussieht, als könnte es für das Google Logo sein, aber ich habe noch nicht gegraben. – Fraggle

Verwandte Themen