2013-04-01 30 views
16

Ben PhoneGap kullanarak bir Android uygulaması üzerinde çalışıyorum Açık ve yön göstermek için yerleşik Google Haritalar uygulamasını açmak nasıl sergiyi sorun yaşıyorum nasıl. Bir URL ekleyerek bir haritayı açarken herhangi bir sorunum yok, ancak uygulamayı açmam beni güldürdü. Şimdiye kadar iOS platformunda geliştirilmek üzere Phonegap ile ilgili öneriler buldum.Android PhoneGap - Yerli Google Maps Uygulamasını

Google Haritalar'ı beyaz liste izinlerine ekledim, doğru Cordova.js dosyasını ve komut dosyası etiketimdeki google maps bağlantısını ekledim, AndroidManifest.xml dosyasında, Cordova.jar ve Google Map API dahilinde doğru izinlere sahip oldum benim inşa yolumda, res dizininde Phonegap xml klasörünü, varlıklarım/www dizinindeki js dosyasını, libs dizinindeki jar dosyasını bulundur.

ben başarmaya çalışıyorum Ne:
bir bağlantı tıklandığında

    1., yerli Google Maps uygulamasını açın. Uygulama cihaza yüklenmemişse, kullanıcıya Google Haritalar'ın yüklü olmadığını ve yüklenmesinin gerektiğini bildirin.
      a. Zaten ağ bağlantısını kontrol ediyorum ve yapılması gerektiği gibi işlem yapıyorum.
    2. Google Haritalar, kullanıcının geçerli konumundan tıklanan bağlantının konumuna ilişkin yol tariflerini açar. Ayrıca olaylar Google Maps uygulamasını açılmaz açıkçası iOS'ta yapar ama aşağıda

örnek Android cihazımda tam olarak aynı şekilde çalışır.

<a> href="http://maps.google.com/maps?q=TD Washington DC"><img src="img/ico_pin.png" />White House</a></a> 

ikinci örnek Mevcut konum nasıl takılacağını anlamak mümkün değildi, ancak uç konumu dahil olmak üzere, birinci için ekler. En önemlisi, yine de Google Haritalar uygulamasını açmıyor.

<a href="javascript:openMaps('daddr=1600+Pennsylvania+Ave+NW+Washington+DC+20500+USA');"><img src="img/ico_pin.png" />White House</a> 

function openMaps(querystring) { 
    var maproot = ''; 
    maproot = 'http://maps.google.com/maps?saddr=Current+Location&'; 
    window.location = maproot + querystring; 
} 

Aşağıdaki üçüncü örnekte, uygulamam içinde bir harita görüntüleyebiliyorum. Doğru rotayı gösterir (A noktasından B noktasına bir havai görünümden), ancak gerçek Google Haritalar uygulamasını tekrar açmaz.

<a id="whDirections" href="#mm_directions" onclick="getDirections()"> 
        <img src="img/ico_pin.png" />White House</a> 

<div data-role="content"> 
    <div class="ui-bar-c ui-corner-all ui-shadow" style="padding: 1em;"> 
     <div id="mapdirections_canvas" style="height: 300px;"></div> 
    </div> 
</div> 

function getDirections() { 
    var directionsService = new google.maps.DirectionsService(); 
    var map; 
    var directionsDisplay = new google.maps.DirectionsRenderer(); 
    var mapOptions = { 
     zoom: 9, 
     zoomControl: true, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    var map = new google.maps.Map(document.getElementById("mapdirections_canvas"), mapOptions); 
    directionsDisplay.setMap(map); 

    var myLatLng = new google.maps.LatLng(gmmLat, gmmLong); 
    if (document.getElementById("whDirections")) { 
     var request = { 
      origin: myLatLng, 
     destination: new google.maps.LatLng(38.897096, -77.036545), 
      travelMode: google.maps.TravelMode.DRIVING 
    }; 
    directionsService.route(request, function(result, status) { 
     if (status == google.maps.DirectionsStatus.OK) { 
      directionsDisplay.setDirections(result); 
     } 
    }); 
} 

Bu konuda herhangi bir bağlantısı veya fikri varsa, bu yardımı gerçekten takdir ediyorum. Bir 'Merhaba Dünya' uygulaması dışında, bu benim ilk mobil uygulama. Bir şeyi kaçırırsam veya bunu tamamen yanlış yaparsam lütfen bana bildirin. Herhangi bir ek bilgi gerekiyorsa lütfen bana bildirin.

Yardım için şimdiden teşekkür ederiz.

+1

Sanırım haritalar, geo: // .... –

cevap

50

uri: geo türünü kullanın.

<a href="geo:38.897096,-77.036545">open map</a> 
ve kullanıcı, aygıtlarında yüklü olan eşleme uygulamalarından herhangi birini açmayı seçecektir.

+1

ile başlayan bir bağlantıya açılacaktır. Navigasyon için bir başlangıç ​​ve bitiş adresinde geçmek istersem, yukarıda yaptığım gibi bir şey yapamaz mıyım?
Directions işlev openMaps (sorgu dizesi) { var MAPROOT = ''; var lat = position.coords.latitude; var lng = position.coords.longitude; var myLoc = new google.maps.Lat.Lng (lat, lng); maproot = "geo:" + myLoc + "? Saddr =" + myLoc; \t window3_location = maproot + querystring; } – Brian

+4

Geo URI şeması jeo: enlem, boylam http://developer.android.com/guide/appendix/g-app-intents.html –

+14

Cordova 3.6.0 URL'ler izin verilen kısıtlamasına, ikinci beyaz listeyi tanıtır harici uygulamaları başlatmak için. [Cordova 3.6.0 Beyaz Liste Kılavuzu] (http://cordova.apache.org/docs/en/3.6.0/guide_appdev_whitelist_index.md.html) Bu nedenle, yapılandırmada açıkça eklemeniz gerekir.xml: delkant

-2

Bu, bu yöntemle Google Maps ile

window.open("http://maps.google.com/?q=" + address, "_system"); 

cordova 3.4 çalışan bir işaretleyici gösterir ve metin adresini, sadece enlem-boylam koordinatları

+3

, uygulamanıza geri dönebilmek için uygulamanızın yerine geçecek bir pencere açar. Uygulamanıza geri dönebilmek için onu öldürmeniz ve yeniden açmanız gerekir. –

13

benim için bu çalışma kullanabilirsiniz ...Android Maps App için

var addressLongLat = yourLatitude+','+yourLongitude 

: iOS Maps App için

window.open("geo:"+addressLongLat); 

: PhoneGap tüm versiyonu için

window.open("http://maps.google.com/?q="+addressLongLat, '_system'); 
+0

Android/iPhone için bir kez programlama yapıyorsam, kullanıcının hangi telefon türüne bağlı olarak kullanılmasını istediğinizi nasıl anlayabilirim? – Mike

+0

device.platform'u deneyin: http://cordova.apache.org/docs/en/3.0.0/cordova_device_device.md.html#device.platform – ledragon

+0

Daha önce hangi platformun daha önce olduğunu kontrol etmeniz gerekiyor. Eklenti Aygıtını kullanın: https://www.npmjs.com/package/cordova-plugin-device. Ve ... if (device.platform == 'iOS') { // DO IOS ŞEYLER } else (device.platform == 'Android') ise { // ANDROID ŞEYLER YAPMAK } İhtiyacınız olan her türlü platform. –

4

: App Tarayıcıda Google Maps için

window.open("http://maps.apple.com/?q="+addressLongLat, '_system'); 

/cordova veya web tarayıcısı. Google, yerel uygulamayı eşler.

geçerli konumundan q Navigasyon için

- window.open ("google.navigation: q = 23.3728831,85.3372199 & mode = d" '_system');

Aramak için - window.open ("geo: 0,0? Q = pizza", '_system');

İşte Oku - https://developers.google.com/maps/documentation/android/intents

2

Launch Navigator Cordova/Phonegap Plugin üzerinde yerli navigasyon uygulamasını kullanarak bir hedefe gitmek için kullanılabilir: -

  1. Android: Google Navigator
  2. iOS: Apple Maps/Google Maps
  3. Windows Phone: Bing Haritalar
0

T onun ben ne kullanın:

function (lat, lon) { 
    var latLon = lat + ',' + lon; 

    if (device.platform.toUpperCase() === "ANDROID") { 
     window.open("geo:" + latLon, "_system"); 
    } else if (device.platform.toUpperCase() === "IOS") { 
     window.open("http://maps.apple.com/?sll=" + latLon + "&z=100&t=k", "_system"); 
    } 
} 

Not: Elma haritalar açarken, sll=... ve t=k, ki ben tam bir enlem ve boylam belirterek ediyorum demektir ve t=k Elma haritaları uydu görüntülerine görüntülemek istediğiniz anlamına gelir. Ayrıca, sadece iOS ve Android için yazıyorum, bu yüzden başka platformlar kullanıyorsanız, her biri için açıkça kontrol ettiğinizden emin olun! Eminim Android'in geo: her zaman beklediğiniz gibi çalışıyor, ama yanılıyor olabilirim. Unutmayın: Her şeyi gerçek bir cihazda test edin!