2016-12-30 4 views
0

Я делаю простое приложение PhoneGap, которое получает местоположение пользователя.Gelocation не работает в Android - PhoneGap Build

код, используемый для моей сборки от примеров карт documentation

После мой XML-код:

<content src="index.html" /> 
<preference name="DisallowOverscroll" value="true" /> 
<preference name="android-minSdkVersion" value="14" /> 
<preference name="StatusBarOverlaysWebView" value="false" /> 
<preference name="StatusBarBackgroundColor" value="#ee6e73" /> 
<preference name="StatusBarStyle" value="blacktranslucent" /> 
<preference name="orientation" value="portrait" /> 
<plugin name="cordova-plugin-statusbar" source="npm" spec="~2.1.3" /> 
<plugin name="cordova-plugin-geolocation" source="npm" /> 
<plugin name="org.apache.cordova.globalization" source="npm" /> 
<plugin name="org.apache.cordova.geolocation" source="npm" /> 
<plugin name="cordova-plugin-console" source="npm" spec="~1.0.3" /> 
<plugin name="cordova-plugin-dialogs" source="npm" spec="~1.2.1" /> 
<plugin name="cordova-plugin-whitelist" source="npm" spec="~1.2.1" /> 

<feature name="Geolocation"> 
<param name="android-package" value="org.apache.cordova.geolocation.GeoBroker" /> 
</feature> 
<allow-navigation href="*" /> 
<access origin="*" launch-external="yes" /> 
<access origin="*://*.googleapis.com/*" subdomains="true" /> 
<access origin="*://*.gstatic.com/*" subdomains="true" /> 
<access origin="*://*.google.com/*" subdomains="true" /> 
<access origin="*://*.googleusercontent.com/*" subdomains="true" /> 
<allow-intent href="http://*/*" /> 
<allow-intent href="https://*/*" /> 
<allow-intent href="tel:*" /> 
<allow-intent href="sms:*" /> 
<allow-intent href="mailto:*" /> 
<allow-intent href="geo:*" /> 
<platform name="android"> 
<allow-intent href="market:*" /> 
</platform> 
<platform name="ios"> 
<allow-intent href="itms:*" /> 
<allow-intent href="itms-apps:*" /> 
</platform> 

В то время как приложение работает отлично в браузере, андроид версия не загрузите местоположение.

Далее заметил, что maps.gstatic.com и mts.googleapis.com не загружается из приложения, и загружается в браузере, который затем приводит в предоставлении местоположения

Спасибо заранее.

UPDATE 1:

, чтобы избежать путаницы, я использовал config.xml по умолчанию, генерируемый PhoneGap настольное приложение, все еще место не получается.

<?xml version='1.0' encoding='utf-8'?> 
<widget id="com.phonegap.helloworld" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://phonegap.com/ns/1.0"> 
<name>new</name> 
<description> 
Hello World sample application that responds to the deviceready event. 
</description> 
<author email="[email protected]" href="http://phonegap.com"> 
    PhoneGap Team 
</author> 
<content src="index.html" /> 
<preference name="DisallowOverscroll" value="true" /> 
<preference name="android-minSdkVersion" value="14" /> 
<plugin name="cordova-plugin-battery-status" source="npm" spec="~1.1.1" /> 
<plugin name="cordova-plugin-camera" source="npm" spec="~2.1.1" /> 
<plugin name="cordova-plugin-media-capture" source="npm" spec="~1.2.0" /> 
<plugin name="cordova-plugin-console" source="npm" spec="~1.0.2" /> 
<plugin name="cordova-plugin-contacts" source="npm" spec="~2.0.1" /> 
<plugin name="cordova-plugin-device" source="npm" spec="~1.1.1" /> 
<plugin name="cordova-plugin-device-motion" source="npm" spec="~1.2.0" /> 
<plugin name="cordova-plugin-device-orientation" source="npm" spec="~1.0.2" /> 
<plugin name="cordova-plugin-dialogs" source="npm" spec="~1.2.0" /> 
<plugin name="cordova-plugin-file" source="npm" spec="~4.1.1" /> 
<plugin name="cordova-plugin-file-transfer" source="npm" spec="~1.5.0" /> 
<plugin name="cordova-plugin-geolocation" source="npm" spec="~2.1.0" /> 
<plugin name="cordova-plugin-globalization" source="npm" spec="~1.0.3" /> 
<plugin name="cordova-plugin-inappbrowser" source="npm" spec="~1.3.0" /> 
<plugin name="cordova-plugin-media" source="npm" spec="~2.2.0" /> 
<plugin name="cordova-plugin-network-information" source="npm" spec="~1.2.0" /> 
<plugin name="cordova-plugin-splashscreen" source="npm" spec="~3.2.1" /> 
<plugin name="cordova-plugin-statusbar" source="npm" spec="~2.1.2" /> 
<plugin name="cordova-plugin-vibration" source="npm" spec="~2.1.0" /> 
<plugin name="cordova-plugin-whitelist" source="npm" spec="~1.2.1" /> 

<access origin="*" /> 
<allow-intent href="http://*/*" /> 
<allow-intent href="https://*/*" /> 
<allow-intent href="tel:*" /> 
<allow-intent href="sms:*" /> 
<allow-intent href="mailto:*" /> 
<allow-intent href="geo:*" /> 
<platform name="android"> 
    <allow-intent href="market:*" /> 
</platform> 
<platform name="ios"> 
    <allow-intent href="itms:*" /> 
    <allow-intent href="itms-apps:*" /> 
</platform> 

ответ

0

Попробуйте этот плагин, чтобы получить лат длиной от андроида устройства, а затем вызвать карту на успех, что плагины называет

Cordova Plugin Geolocation

Добавить Lat долго карта получила в функцию успеха

document.addEventListener("deviceready", appReady, false); 
function appReady(){ 
    navigator.geolocation.getCurrentPosition(onSuccess, onError); 
} 

// onSuccess Callback 
// This method accepts a Position object, which contains the 
// current GPS coordinates 

var onSuccess = function(position) { 
    alert('Latitude: '   + position.coords.latitude   + '\n' + 
      'Longitude: '   + position.coords.longitude   + '\n' + 
      'Altitude: '   + position.coords.altitude   + '\n' + 
      'Accuracy: '   + position.coords.accuracy   + '\n' + 
      'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '\n' + 
      'Heading: '   + position.coords.heading   + '\n' + 
      'Speed: '    + position.coords.speed    + '\n' + 
      'Timestamp: '   + position.timestamp    + '\n'); 
}; 

// onError Callback receives a PositionError object 

function onError(error) { 
    alert('code: ' + error.code + '\n' + 
      'message: ' + error.message + '\n'); 
} 

Попробуйте это и Я знаю, работает ли это для вас или нет.

+0

Спасибо, но плагин уже включен в моем коде <плагин Name = "Cordova-плагин-геолокация "source =" npm "/>. – meetrk85

+0

Добавили ли вы 'cordova.js' в свой файл' .html' или создаете приложение через «PhoneGap Build Online», а затем добавьте 'phonegap.js' и попробуйте вызвать эту функцию в' deviceready event listner' –

+0

попробовали это тоже, но не повезло. У меня нет физической активности, может быть, проблема в эмуляторе? – meetrk85

0

Я обновил свой билд, чтобы

<preference name="phonegap-version" value="cli-6.3.0" /> 

вы должны удалить

<plugin name="cordova-plugin-geolocation" source="npm" /> 
<plugin name="org.apache.cordova.geolocation" source="npm" /> 

и

<feature name="Geolocation"> 
<param name="android-package" value="org.apache.cordova.geolocation.GeoBroker" /> 
</feature> 

из вашего кода и добавьте приведенный ниже код

для андроида

<plugin name="cordova-plugin-geolocation" spec="0.3.12" source="npm"/> 
<plugin name="cordova-plugin-network-information" spec="0.2.15" source="npm" /> 

для IOS

<plugin name="cordova-plugin-geolocation" spec="https://github.com/apache/cordova-plugin-geolocation.git"/> 
<plugin name="cordova-plugin-network-information" spec="https://github.com/apache/cordova-plugin-network-information.git" /> 

и использовать это, чтобы загрузить местоположение

navigator.geolocation.getCurrentPosition(zoomToLocation, locationError, { maximumAge: 5000, timeout: 7500 }); 

function zoomToLocation(position) { 
      var geolocate = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); 
+0

спасибо, но никаких изменений в результатах он по-прежнему не получает геолокации – meetrk85

+0

@ meetrk85: Я загружаю местоположение из навигатор – shahbaz

Смежные вопросы