Hjelp med mapview

Hjelp med mapview

Innleggav tomarild » søn 26.08.2012 2:24

Hei!


Fikk så bra hjelp til forrige problem, så jeg forsøker med ny utfordring.

Jeg har lyst til å legge inn et mapview i appen min. Er det noen som har noen gode forklaringer? Bruker xcode 4.3.3.

Edit:
Har nå klart å få til Mapview. Mangler bare at det vises en bestemt plassering når det starter opp. Noen tips?
medlem i 96 måneder
 

Hjelp med mapview

Innleggav Larsaronen » søn 26.08.2012 7:47

Sjekk ut denne tutorialen:
http://www.raywenderlich.com/2847/intro ... s-tutorial

Ray Wenderlich har mange gode og oppdaterte tutorials..
medlem i 160 måneder
 

Re: Hjelp med mapview

Innleggav tomarild » søn 26.08.2012 12:53

Kjempefin tutorial! Takk!

Står imidlertid fast når jeg skal control-dra fra MapView og ned til Viewcontroller.h. Xcode vil ikke la meg gjøre det. Kan det være fordi jeg allerede har noe webview-greier liggende der?
medlem i 96 måneder
 

Re: Hjelp med mapview

Innleggav tomarild » tir 28.08.2012 1:04

Har forsket litt på dette med amatørøyne, men finner ingen løsning. Jeg vil gjerne at kartet skal vise den posisjonen jeg har angitt.

Her er det jeg har av kode:

AppDelegate.h
Kode: Merk alt
#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

@end



AppDelegate.m
Kode: Merk alt
#import "AppDelegate.h"

@implementation AppDelegate

@synthesize window = _window;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    return YES;
}
                     
- (void)applicationWillResignActive:(UIApplication *)application
{
    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
    // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
}

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}

- (void)applicationWillTerminate:(UIApplication *)application
{
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}

@end




ViewController.h
Kode: Merk alt
#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>

#define METERS_PER_MILE 1609.344



@interface ViewController : UIViewController {
    IBOutlet UIWebView *webView;

}

@property (weak, nonatomic) IBOutlet MKMapView *_mapView;

@property (nonatomic, retain) UIWebView *webView;

@end




ViewController.m
Kode: Merk alt
#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize webView;
@synthesize _mapView;

- (void)viewDidLoad {
   
    NSString *urlAddress = @"http://www.finn.no";
   
    //Create a URL object.
    NSURL *url = [NSURL URLWithString:urlAddress];
   
    //URL Requst Object
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
   
    //Load the request in the UIWebView.
    [webView loadRequest:requestObj];
}

- (void)viewWillAppear:(BOOL)animated { 
    // 1
    CLLocationCoordinate2D zoomLocation;
    zoomLocation.latitude = 59.281516;
    zoomLocation.longitude= -56.580806;
    // 2
    MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(zoomLocation, 0.5*METERS_PER_MILE, 0.5*METERS_PER_MILE);
    // 3
    MKCoordinateRegion adjustedRegion = [_mapView regionThatFits:viewRegion];               
    // 4
    [_mapView setRegion:adjustedRegion animated:YES];     
}


@end




Noen som kan se hvor jeg tråkker i salaten hen? Jeg får altså opp kartet, men er stuck på vestkysten av Amerika.
medlem i 96 måneder
 

Re: Hjelp med mapview

Innleggav tomarild » ons 03.10.2012 1:34

Hei dere!

Sliter fortsatt litt med mapview, men er noe nærmere. Får til mapview, og en pin som viser en bestemt posisjon, men så lenge jeg kombinerer med webview i appen, så får jeg kun opp kartet, med en eller annen plassering i California. Og pin´en min står ikke der den skal lenger.

Hvis noen har noen meninger etter å ha sett litt på koden, så blir jeg overlykkelig.


ViewController.h
Kode: Merk alt
#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>

#define METERS_PER_MILE 1609.344

@interface ViewController : UIViewController <MKMapViewDelegate>{
    BOOL _doneInitialZoom;
    IBOutlet UIWebView *webView;
}

@property (weak, nonatomic) IBOutlet MKMapView *_mapView;
@property (nonatomic, retain) UIWebView *webView;

@end




ViewController.m
Kode: Merk alt
#import "ViewController.h"
#import "NewClass.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize _mapView;
@synthesize webView;

- (void)viewDidLoad
{
    [super viewDidLoad];
   [_mapView setMapType:MKMapTypeStandard];
    [_mapView setZoomEnabled:YES];
    [_mapView setScrollEnabled:YES];
   
    MKCoordinateRegion region = { {0.0,0.0} , {0.0,0.0} };
    region.center.latitude = 61.097557;
    region.center.longitude = 12.126545;
    region.span.latitudeDelta = 0.01f;
    region.span.longitudeDelta = 0.01f;
    [_mapView setRegion:region animated:YES];
   
    newClass *ann = [[newClass alloc] init];
    ann.title = @"Hjem";
    ann.subtitle = @"Her bor jeg";
    ann.coordinate = region.center;
    [_mapView addAnnotation:ann];
   
   
    NSString *urlAddress = @"http://google.no";
   
    //Create a URL object.
    NSURL *url = [NSURL URLWithString:urlAddress];
   
    //URL Requst Object
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
   
    //Load the request in the UIWebView.
    [webView loadRequest:requestObj];
}


- (void)viewDidUnload
{
    [self setWebView:nil];
    [self set_mapView:nil];
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

- (void)viewWillAppear:(BOOL)animated { 
    // 1
    CLLocationCoordinate2D zoomLocation;
    zoomLocation.latitude = 61.097557;
    zoomLocation.longitude = 12.126545;
   
    // 2
    MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(zoomLocation, 0.5*METERS_PER_MILE, 0.5*METERS_PER_MILE);
    // 3
    MKCoordinateRegion adjustedRegion = [_mapView regionThatFits:viewRegion];               
    // 4
    [_mapView setRegion:adjustedRegion animated:YES];     
}

@end






NewClass.h
Kode: Merk alt
#import <UIKit/UIKit.h>
#import <MapKit/MKAnnotation.h>

@interface newClass : NSObject{
    CLLocationCoordinate2D coordinate;
    NSString *title;
    NSString *subtitle;
}
@property (nonatomic, assign) CLLocationCoordinate2D coordinate;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *subtitle;

@end





NewClass.m
Kode: Merk alt
#import "NewClass.h"

@implementation newClass
@synthesize coordinate, title, subtitle;

@end




Webview fungerer fint, og mapview fungerer forsåvidt - men jeg får altså ikke zoomet inn riktig posisjon ved oppstart, og pin´en som skal markere en gitt posisjon funker ikke (den funker når jeg fjerner alt som har med webview å gjøre).
medlem i 96 måneder
 

Re: Hjelp med mapview

Innleggav Larsaronen » søn 07.10.2012 10:45

Jeg tror du bør begynne med noe litt lettere.. Her var det endel feil og rotete programmering. Lær deg litt mer grunnleggende ting først..

Blant annet blander du sammen ARC og manuell minne håndtering, og forskjellige måter å deklarere IBOutlets. Du har sikkert klipt å limt fra 2 tutorials. En fra før iOS 5 og en etter..

Jeg anbefaler raywenderlich.com start med helt basic å bygg deg opp derfra..
f.eks: iOS for high school students - Getting started

Sørg for at kildene du lærer fra er oppdatert til iOS 5, helst iOS 6..

For å svare spørsmålet så tipper jeg problemet ditt er at du ikke har knyttet mapview i interface builder opp med IBoutlet ViewController.h..

ctrl-dra fra webview til view controller..
medlem i 160 måneder
 

Re: Hjelp med mapview

Innleggav tomarild » tor 11.10.2012 0:39

Takk for svar!

Jeg fikk endelig løst problemet. Måtte bare endre navn fra UIviewcontroller til ViewController i class :-) DA gikk det an å ctrl-dra fra View Controller og til webview.

Skjønner hva du sier om rot i koden. Har klippet og limt litt ja. Appen fungerer fint, men jeg skal absolutt begynne grundig fra starten av snart. Vil jeg få problemer med å få den igjennom til Apple App Store hvis jeg har noen gule warnings?

Ray Wenderlich har jeg sett en del på... veldig mye fint. Skal kaste meg ut i det!
medlem i 96 måneder
 


Returner til Programmering



Hvem er i Forumene

Registrerte brukere: Google [Bot]