प्रारंभ पता के रूप में वर्तमान स्थान से दिशा-निर्देश के लिए iPhone मैप्स आह्वान करने के लिए कैसे

वोट
72

मैं जानता हूँ कि यह फोन करके iPhone नक्शे आवेदन शुरू करने के लिए संभव है openURLमानकों के साथ एक गूगल मैप्स यूआरएल पर saddrऔर daddrस्थान तार या अक्षांश / देशांतर (नीचे उदाहरण देखें) के साथ।

लेकिन मैं सोच रहा हूँ अगर यह शुरू पता करने के लिए संभव है वर्तमान स्थान नक्शे बुकमार्क ताकि मैं उपयोग कर सकते हैं नक्शे एप्लिकेशन की स्थान हैंडलिंग कोड। मेरे गूगल खोज सुंदर निरर्थक हो गया है।

उदाहरण के लिए:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat: @http://maps.google.com/maps?saddr=%@&daddr=%@, myLatLong, latlong]]];

कुछ के स्थान पर वर्तमान स्थान बुकमार्क आह्वान करने के लिए साथ छोड़कर myLatLong

23/02/2009 को 08:11
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


16 जवाब

वोट
133

पूर्व IOS 6

आप वहाँ से आप मार्ग, एक सड़क का पता या स्थान के लिए करने के लिए नक्शे कोर स्थान का उपयोग करने के वर्तमान स्थान प्राप्त करने की आवश्यकता है, लेकिन यह अक्षांश / देशांतर जोड़ी के साथ, आप प्राप्त कर सकते हैं। इस तरह:

CLLocationCoordinate2D currentLocation = [self getCurrentLocation];
// this uses an address for the destination.  can use lat/long, too with %f,%f format
NSString* address = @"123 Main St., New York, NY, 10001";
NSString* url = [NSString stringWithFormat: @"http://maps.google.com/maps?saddr=%f,%f&daddr=%@",
                    currentLocation.latitude, currentLocation.longitude,
                    [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[[UIApplication sharedApplication] openURL: [NSURL URLWithString: url]];

अंत में, यदि आप स्पष्ट रूप से वर्तमान स्थान प्राप्त करने CoreLocation उपयोग करने से बचें, और उपयोग करना चाहते हैं करना चाहते हैं @"http://maps.google.com/maps?saddr=Current+Location&daddr=%@"बजाय यूआरएल, तो इस लिंक है कि मैं नीचे टिप्पणी में प्रदान की देख कैसे स्थानीय बनाना के लिए वर्तमान + स्थान स्ट्रिंग। हालांकि, अगर आप एक और गैर-दस्तावेजी सुविधा का लाभ ले रहे हैं, और के रूप में जेसन McCreary नीचे बताते हैं, यह आगामी रिलीज़ में मज़बूती से काम न करें।


आईओएस 6 के लिए अद्यतन

मूल रूप से, मैप्स गूगल के नक्शे का इस्तेमाल किया है, लेकिन अब, एप्पल और गूगल अलग नक्शे क्षुधा की है।

1) यदि आप Google नक्शे का उपयोग कर मार्ग करना चाहते हैं, का उपयोग comgooglemaps यूआरएल स्कीम :

NSString* url = [NSString stringWithFormat: @"comgooglemaps://?daddr=%@&directionsmode=driving",
                    [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
BOOL opened = [[UIApplication sharedApplication] openURL: [NSURL URLWithString: url]];

2) का उपयोग करने के लिए एप्पल मैप्स, आप नए उपयोग कर सकते हैं MKMapItemआईओएस 6 के लिए वर्ग एप्पल एपीआई डॉक्स यहाँ देखें

मूल रूप से, आप कुछ इस तरह का उपयोग करेगा, यदि गंतव्य के लिए मार्ग निर्देशांक ( latlong):

    MKPlacemark* place = [[MKPlacemark alloc] initWithCoordinate: latlong addressDictionary: nil];
    MKMapItem* destination = [[MKMapItem alloc] initWithPlacemark: place];
    destination.name = @"Name Here!";
    NSArray* items = [[NSArray alloc] initWithObjects: destination, nil];
    NSDictionary* options = [[NSDictionary alloc] initWithObjectsAndKeys:
                                 MKLaunchOptionsDirectionsModeDriving, 
                                 MKLaunchOptionsDirectionsModeKey, nil];
    [MKMapItem openMapsWithItems: items launchOptions: options];

आदेश में एक ही कोड में दोनों iOS 6+ और पूर्व IOS 6 का समर्थन करने के लिए, मैं इस कोड एप्पल पर है ऐसा ही कुछ का उपयोग कर की सलाह देते हैं MKMapItemएपीआई डॉक पेज:

Class itemClass = [MKMapItem class];
if (itemClass && [itemClass respondsToSelector:@selector(openMapsWithItems:launchOptions:)]) {
   // iOS 6 MKMapItem available
} else {
   // use pre iOS 6 technique
}

यह ग्रहण करेंगे कि अपने Xcode बेस SDK, iOS 6 (या है नवीनतम आईओएस )।

08/06/2009 को 10:49
का स्रोत उपयोगकर्ता

वोट
21
NSString* addr = [NSString stringWithFormat:@"http://maps.google.com/maps?daddr=Current Location&saddr=%@",startAddr];
NSURL* url = [[NSURL alloc] initWithString:[addr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[[UIApplication sharedApplication] openURL:url];
[url release];

यह काम करता है लेकिन केवल जब iPhone / iPod भाषा अंग्रेजी में सेट है। आप अन्य भाषाओं का समर्थन करना चाहते हैं तो आपको मानचित्र को बुकमार्क नाम से मेल करने के लिए एक स्थानीय स्ट्रिंग का उपयोग करना होगा।

01/12/2010 को 11:05
का स्रोत उपयोगकर्ता

01/11/2010 को 15:46
का स्रोत उपयोगकर्ता

वोट
10

आप की तरह एक पूर्वप्रक्रमक #define उपयोग कर सकते हैं:

#define SYSTEM_VERSION_LESS_THAN(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)

अपने iOS संस्करण को समझने के लिए। फिर, मैं IOS 6 भी समर्थन करने के लिए, इस कोड का उपयोग कर सकते हैं:

NSString* addr = nil;
if (SYSTEM_VERSION_LESS_THAN(@"6.0")) {
   addr = [NSString stringWithFormat:@"http://maps.google.com/maps?daddr=%1.6f,%1.6f&saddr=Posizione attuale", view.annotation.coordinate.latitude,view.annotation.coordinate.longitude];
} else {
   addr = [NSString stringWithFormat:@"http://maps.apple.com/maps?daddr=%1.6f,%1.6f&saddr=Posizione attuale", view.annotation.coordinate.latitude,view.annotation.coordinate.longitude];
}

NSURL* url = [[NSURL alloc] initWithString:[addr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[[UIApplication sharedApplication] openURL:url];
30/09/2012 को 10:51
का स्रोत उपयोगकर्ता

वोट
5

सैंडबॉक्सिंग के कारण, आप मानचित्र आवेदन के बुकमार्क करने के लिए पहुँच नहीं है।

इसके बजाय, कोर स्थान का उपयोग वर्तमान स्थान अपने आप को निर्धारित करने के लिए। फिर उस स्थान (अक्षांश और लंबे समय तक) यूआरएल आप मानचित्र खोलने के लिए निर्माण में इस्तेमाल करते हैं।

23/02/2009 को 16:07
का स्रोत उपयोगकर्ता

वोट
4

मैं देखने की अनुशंसा करते CMMapLauncher , एक मिनी पुस्तकालय है कि मैं एक विशिष्ट मानचित्रण अनुरोध के साथ एप्पल, गूगल और अन्य iOS मानचित्रण एप्लिकेशन लॉन्च करने का निर्माण किया। CMMapLauncher के साथ, कोड प्राप्त करने के लिए अपने प्रश्न में दिए गए निर्देशों होगा:

[CMMapLauncher launchMapApp:CMMapAppAppleMaps
          forDirectionsFrom:[CMMapPoint mapPointWithName:@"Origin"
                                              coordinate:myLatLong]
                         to:[CMMapPoint mapPointWithName:@"Destination"
                                              coordinate:latlong]];

आप देख सकते हैं, यह भी समाहित संस्करण IOS 6 और दूसरों के बीच आवश्यक जाँच।

07/09/2013 को 13:37
का स्रोत उपयोगकर्ता

वोट
3

अरे के बाद से iOS6 बाहर है!

एप्पल कुछ एक बुरी तरह से उल्लेखनीय (देखने की मेरी बात से) किया था।

एप्पल के नक्शे का शुभारंभ कर रहे हैं और iOS चलाने वाले उपकरणों के लिए 6 आप उपयोग नहीं करना चाहिए maps.google.com/?q=अगर आप iDevice देशी योजना एप्लिकेशन खोलने के लिए चाहते हैं। अब यह होगा maps.apple.com/?q=

डेवलपर्स बहुत काम की जरूरत नहीं है, इसलिए है कि, दोस्ताना maps.apple.com सर्वर maps.google.com पर सभी गैर एप्पल उपकरणों पुनर्निर्देश इतना परिवर्तन पारदर्शी है।

इस तरह से हम developpers बस है सेब वालों के लिए सभी गूगल क्वेरी स्ट्रिंग स्विच करने के लिए। यह वही है मैं एक बहुत नापसंद है।

मैं आज कि functionnality लागू करने के लिए तो मैं यह किया था। लेकिन मुझे लगा इसलिए मैंने सोचा कि मैं सिर्फ iDevices सर्वर साइड का पता लगाने और सिर्फ उन लोगों के लिए सेब यूआरएल की सेवा करता हूँ मैं सिर्फ मोबाइल वेबसाइट में झूठ बोल रही लक्षित करने के लिए एप्पल के नक्शे सर्वर हर URL रीराइट नहीं करना चाहिए। मैंने सोचा कि मैं हिस्सा था।

मैं PHP का उपयोग कर रहा तो मैं खुले स्रोत मोबाइल का इस्तेमाल किया पता लगाने पुस्तकालय: http://code.google.com/p/php-mobile-detect/

बस का उपयोग isiPadएक बूलियन गेटर के रूप में छद्म विधि और आपका काम हो, तो आप अभ्यस्त सेब में गूगल परिवर्तित ;-)

$server=$detect->isiPad()?"apple":"google";
$href="http://maps.{$server}.com/?q=..."

चीयर्स!

21/09/2012 को 18:57
का स्रोत उपयोगकर्ता

वोट
2

आप स्थान अनुमतियों के लिए पूछने के लिए नहीं करना चाहते हैं और अक्षां और एलएनजी की जरूरत नहीं है, तो निम्न का उपयोग करें।

NSString *destinationAddress = @"Amsterdam";

Class itemClass = [MKMapItem class];
if (itemClass && [itemClass respondsToSelector:@selector(openMapsWithItems:launchOptions:)]) {

    CLGeocoder *geocoder = [[CLGeocoder alloc] init];
    [geocoder geocodeAddressString:destinationAddress completionHandler:^(NSArray *placemarks, NSError *error) {
        if([placemarks count] > 0) {

            MKPlacemark *placeMark = [[MKPlacemark alloc] initWithPlacemark:[placemarks objectAtIndex:0]];

            MKMapItem *mapItem = [[MKMapItem alloc]initWithPlacemark:placeMark];

            MKMapItem *mapItem2 = [MKMapItem mapItemForCurrentLocation];


            NSArray *mapItems = @[mapItem, mapItem2];

            NSDictionary *options = @{
        MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeDriving,
        MKLaunchOptionsMapTypeKey:
            [NSNumber numberWithInteger:MKMapTypeStandard],
        MKLaunchOptionsShowsTrafficKey:@YES
            };

            [MKMapItem openMapsWithItems:mapItems launchOptions:options];

        } else {
            //error nothing found
        }
    }];
    return;
} else {

    NSString *sourceAddress = [LocalizedCurrentLocation currentLocationStringForCurrentLanguage];

    NSString *urlToOpen = [NSString stringWithFormat:@"http://maps.google.com/maps?saddr=%@&daddr=%@",
                 [sourceAddress stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
                 [destinationAddress stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlToOpen]];
}

IOS5 के लिए, वर्तमान स्थान सही भाषा में की जरूरत है। मैं इस पोस्ट से LocalizedCurrentLocation का उपयोग http://www.martip.net/blog/localized-current-location-string-for-iphone-apps

iOS6 के लिए, मैं CLGeocoder का उपयोग स्थान-चिह्न और फिर इसके साथ नक्शा और वर्तमान स्थान को खोलने के लिए।

CoreLocation.framework और MapKit.framework जोड़ने का ध्यान रखें

06/12/2012 को 13:14
का स्रोत उपयोगकर्ता

वोट
2

iOS6 के लिए सेब डॉक्स बराबर maps.apple.com यूआरएल योजना उपयोग करने की अनुशंसा

इसलिए का उपयोग

http://maps.apple.com/maps?saddr=%f,%f&daddr=%f,%f

के बजाय

http://maps.google.com/maps?saddr=%f,%f&daddr=%f,%f

पीछे की ओर संगत कोड होगा होने के लिए

    NSString* versionNum = [[UIDevice currentDevice] systemVersion];
    NSString *nativeMapScheme = @"maps.apple.com";
    if ([versionNum compare:@"6.0" options:NSNumericSearch] == NSOrderedAscending)
        nativeMapScheme = @"maps.google.com";
    }
    NSString* url = [NSString stringWithFormat: @"http://%@/maps?saddr=%f,%f&daddr=%f,%f", nativeMapScheme
             startCoordinate.latitude, startCoordinate.longitude,
             endCoordinate.latitude, endCoordinate.longitude];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];

: वहाँ एप्पल नक्शे URL योजना के लिए अन्य समर्थित मानकों की एक पूरी लोड है एप्पल यूआरएल योजना संदर्भ

अगर आप अपने कोड के अन्य भागों में सशर्त कोड है कि आप इन iOS संस्करण का पता लगाने मैक्रो का उपयोग कर सकते हैं। iOS संस्करण मैक्रो

20/09/2012 को 11:53
का स्रोत उपयोगकर्ता

वोट
2

वास्तविक समाधान यहां पाया जा सकता। Z5 अवधारणाओं आईओएस विकास कोड स्निपेट

यह सिर्फ एन्कोडिंग का एक छोटा सा की आवश्यकता है।

- (IBAction)directions1_click:(id)sender
{
    NSString* address = @"118 Your Address., City, State, ZIPCODE";
    NSString* currentLocation = @"Current Location";
    NSString* url = [NSStringstringWithFormat: @"http://maps.google.com/maps?saddr=%@&daddr=%@",[currentLocation stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],[address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    UIApplication *app = [UIApplicationsharedApplication];
    [app openURL: [NSURL URLWithString: url]];
}
02/06/2012 को 17:51
का स्रोत उपयोगकर्ता

वोट
2

तुम बस केवल अपने मोबाइल डिवाइस पर एक यूआरएल से html में अब यह कर सकते हैं। यहाँ एक है उदाहरण । अगर आप सिर्फ अपने फोन पर यह स्कैन करके एक QR कोड आप किसी को चाहे वे कहीं भी आप के लिए दिशा-निर्देश प्राप्त करने का एक तरीका है में इस बारी में अच्छी बात है।

27/05/2010 को 00:34
का स्रोत उपयोगकर्ता

वोट
1

मेरे सुझाव का उपयोग करेंगे OpenInGoogleMaps-आईओएस के रूप में इस (नवंबर 2015 तक) की तारीख पसंद करने के लिए एक ऊपर है, यह कोको फली स्थापना का समर्थन करता है और आप कुछ ही क्लिक में जाने के लिए तैयार कर रहे हैं।

का उपयोग कर स्थापित करें: pod "OpenInGoogleMaps"

का उपयोग करते हुए हेडर फाइल में आवश्यक है: #import "OpenInGoogleMapsController.h"

नीचे नमूना कोड:

/*In case the user does NOT have google maps, then apple maps shall open*/
[OpenInGoogleMapsController sharedInstance].fallbackStrategy = kGoogleMapsFallbackAppleMaps;    

/*Set the coordinates*/
GoogleMapDefinition *definition = [[GoogleMapDefinition alloc] init];   
CLLocationCoordinate2D metsovoMuseumCoords;     //coordinates struct
metsovoMuseumCoords.latitude = 39.770598;
metsovoMuseumCoords.longitude = 21.183215;
definition.zoomLevel = 20;
definition.center = metsovoMuseumCoords;        //this will be the center of the map

/*and here we open the map*/
[[OpenInGoogleMapsController sharedInstance] openMap:definition];       
10/11/2015 को 13:35
का स्रोत उपयोगकर्ता

वोट
1

गूगल मैप्स के वर्तमान संस्करण के साथ, बस छोड़ sadrपैरामीटर:

saddr: ... मूल्य खाली छोड़ दिया जाता है, तो उपयोगकर्ता के वर्तमान स्थान का उपयोग किया जाएगा।

https://developers.google.com/maps/documentation/ios/urlscheme

15/12/2013 को 19:30
का स्रोत उपयोगकर्ता

वोट
1

iOS6 नक्शे एप्लिकेशन के लिए, आप सिर्फ एक ही ऊपर दिया गया URL तैनात उपयोग कर सकते हैं http://maps.google.com/maps?saddr=%f,%f&daddr=%@

लेकिन गूगल के नक्शे URL के बजाय, आप के साथ यूआरएल का उपयोग maps://निम्न URL में जिसके परिणामस्वरूप:maps://saddr=%f,%f&daddr=%@.

का उपयोग करते हुए 'वर्तमान स्थान' काम करने के लिए प्रतीत नहीं होता है, तो मैं निर्देशांक के साथ रहे।

Antother अच्छी बात: यह पीछे की ओर संगत है: iOS5 पर, वह Google मानचित्र ऐप्लिकेशन लॉन्च किया गया।

13/09/2012 को 13:21
का स्रोत उपयोगकर्ता

वोट
0

आप स्रोत स्थान प्रदान नहीं करते हैं, तो यह स्रोत के रूप में वर्तमान स्थान पर ले जाएगा। नीचे की कोशिश करो code-

जाने urlString = " http://maps.apple.com/maps?daddr=(destinationLocation.latitude),(destinationLocation.longitude)&dirflg=d "}

UIApplication.shared.openURL (यूआरएल (स्ट्रिंग: urlString))

18/09/2017 को 12:06
का स्रोत उपयोगकर्ता

वोट
0

मैं एक अलग धागे पर इस जवाब दे दिया। ( वर्तमान स्थान एप्पल मैप्स आईओएस 6 के साथ काम नहीं करता है )। आप पहली बार वर्तमान स्थान के निर्देशांक प्राप्त करने के लिए है, तो इसका इस्तेमाल मानचित्र के url बनाना होगा।

11/01/2013 को 06:37
का स्रोत उपयोगकर्ता

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