Saltar al contenido

Ionic 2 / Ionic 3: Cómo obtener la ubicación actual de un dispositivo

Nuestro grupo de especialistas despúes de varios días de investigación y de juntar de datos, encontramos los datos necesarios, nuestro deseo es que te resulte útil en tu plan.

Solución:

Probé todas las soluciones proporcionadas por todos ustedes y otros también en Internet. Finalmente encontré una solución Puedes probar este complemento cordova-plugin-advanced-geolocation (https://github.com/Esri/cordova-plugin-advanced-geolocation) desde ESRI . Pero este complemento funcionará para Androide no IOS. Para ios, puede optar por el mismo enfoque de siempre. es decir, usando this.geolocation.getCurrentPosition(...) o this.geolocation.watchPosition(..).

Agregar cordova-plugin-advanced-geolocation Complemento como este: –

cordova plugin add https://github.com/esri/cordova-plugin-advanced-geolocation.git

luego agregue debajo de la línea en la parte superior de Clase / Componente

declare var AdvancedGeolocation:any; // en la cima de la clase

Ahora agregue estas líneas dentro de la función relevante del componente (PS: he incluido código para ambos Androide Y IOS)

//**For Android**


    if (this.platform.is('android')) 
          this.platform.ready().then(() => 
            AdvancedGeolocation.start((success) => 
              //loading.dismiss();
              // this.refreshCurrentUserLocation();
              try 
                var jsonObject = JSON.parse(success);
                console.log("Provider " + JSON.stringify(jsonObject));
                switch (jsonObject.provider) 
                  case "gps":
                    console.log("setting gps ====<<>>" + jsonObject.latitude);

                    this.currentLat = jsonObject.latitude;
                    this.currentLng = jsonObject.longitude;
                    break;

                  case "network":
                    console.log("setting network ====<<>>" + jsonObject.latitude);

                    this.currentLat = jsonObject.latitude;
                    this.currentLng = jsonObject.longitude;

                    break;

                  case "satellite":
                    //TODO
                    break;

                  case "cell_info":
                    //TODO
                    break;

                  case "cell_location":
                    //TODO
                    break;

                  case "signal_strength":
                    //TODO
                    break;
                
              
              catch (exc) 
                console.log("Invalid JSON: " + exc);
              
            ,
              function (error) 
                console.log("ERROR! " + JSON.stringify(error));
              ,
              
                "minTime": 500,         // Min time interval between updates (ms)
                "minDistance": 1,       // Min distance between updates (meters)
                "noWarn": true,         // Native location provider warnings
                "providers": "all",     // Return GPS, NETWORK and CELL locations
                "useCache": true,       // Return GPS and NETWORK cached locations
                "satelliteData": false, // Return of GPS satellite info
                "buffer": false,        // Buffer location data
                "bufferSize": 0,         // Max elements in buffer
                "signalStrength": false // Return cell signal strength data
              );

          );
         else 

          // **For IOS**

          let options = 
            frequency: 1000,
            enableHighAccuracy: false
          ;

          this.watch = this.geolocation.watchPosition(options).filter((p: any) => p.code === undefined).subscribe((position: Geoposition) => 
            // loading.dismiss();
            console.log("current location at login" + JSON.stringify(position));

            // Run update inside of Angular's zone
            this.zone.run(() => 
              this.currentLat = position.coords.latitude;
              this.currentLng = position.coords.longitude;
            );

          );
        

EDITAR : La primera instalación siempre va bien. Pero a veces es posible que obtenga errores sin motivo alguno en instalaciones posteriores. Para que este error (cualquier error con este complemento) desaparezca, siga estos pasos:

1. Elimine este complemento de su proyecto (incluido config.xml y package.json).

2. Eliminar / Quitar android plataforma.

3. Borrar plugins carpeta.

4. Ahora reinstale este complemento nuevamente, siguiendo los pasos anteriores.

He repasado el problema y he encontrado la solución.

la mejor manera de obtener la geolocalización del usuario es usar este complemento https://ionicframework.com/docs/native/geolocation/

no olvide agregar esto es app.moudle.ts como proveedor.

simplemente agregando este código en el componente de la aplicación pude obtener la ubicación ( no te olvides de importar y agregar en el constructor)

 this.geolocation.getCurrentPosition( enableHighAccuracy: true ).then((resp) => 
      console.log(resp);
    , Error => 
      console.log(Error);
    ).catch(Error => 
      console.log(Error);
    )

solo tengo el mismo error mientras estaba usando ionic cordova ejecutar android –livereload que es de origen inseguro

pero cuando uso servicio iónico Puedo ver la respuesta en el navegador y también después de usar iónica cordova ejecutar android

solo para confirmar la respuesta en Android, verifico el depurador de Chrome.

Te mostramos comentarios y calificaciones

Al final de todo puedes encontrar los comentarios de otros sys admins, tú asimismo eres capaz mostrar el tuyo si lo deseas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *