2015-07-21 17 views
13

W wielu aplikacjach na iOS widzę przycisk informujący o getDirections, który po kliknięciu otworzy mapę Apple/Google o szerokości i długości geograficznej przekazanej jako cel podróży.Uzyskaj wskazówki dotyczące połączeń API? React-native

Mam przycisk TouchableHighlight z latami i lng gotowymi. Jaki punkt końcowy API muszę wywołać w wywołaniu zwrotnym onPress, aby otworzyć mapy Apple z moimi współrzędnymi jako miejsce docelowe trasy?

Odpowiedz

15

Aby połączyć się do innej aplikacji, takich jak mapy, użyć LinkingIOS:

https://facebook.github.io/react-native/docs/linkingios.html

// Replace lat and long with your own decimal latitude and longitude values 
var url = 'http://maps.apple.com/?ll=<lat>,<long>'; 
LinkingIOS.openURL(url); 

Dla odwzorowuje schemat URL jest tak samo jak ze standardowej Obj-C app:

https://developer.apple.com/library/ios/featuredarticles/iPhoneURLScheme_Reference/MapLinks/MapLinks.html

+3

LinkowanieIOS jest przestarzałe. Zamiast tego użyj [Linking] (https://facebook.gitub.io/react-native/docs/linking.html). –

+4

Aby faktycznie rozpocząć nawigację, użyj '' http://maps.apple.com/?daddr= , 'dla iOS i' http://maps.google.com/maps?daddr=, 'dla Androida . –

-3

Można użyć Geolocation API:

// Get position once 
navigator.geolocation.getCurrentPosition(
    (initialPosition) => this.setState({initialPosition}), // success callback 
    (error) => alert(error.message), // failure callback 
    {enableHighAccuracy: true, timeout: 20000, maximumAge: 1000} // options 
); 

// Repeatedly track position 
this.watchID = navigator.geolocation.watchPosition((lastPosition) => { 
    this.setState({lastPosition}); 
}); 

można następnie wykorzystać pozycję i wyświetlić go jednak chcesz, być może w MapView.

+0

hmm, może być i nie jestem jasne, będę edytować moje pytanie, mam już lat lng i dotykowy przycisk podświetlenia w tej chwili chcę otworzyć iosmap. MapView to tylko widok z czerwoną pinezką na lokalizację/adnotację. – invariant

6

Aby utworzyć powiązanie z inną aplikacją i otworzyć trasę jako Mapy, użyj tej funkcji:

export function openDirections(latitude, longitude) { 
    Platform.select({ 
     ios:() => { 
      Linking.openURL('http://maps.apple.com/maps?daddr=' + latitude + ',' + longitude); 
     }, 
     android:() => { 
      Linking.openURL('http://maps.google.com/maps?daddr=' + latitude + ',' + longitude); 
     } 
    })(); 
} 
Powiązane problemy