Empecé a usar get by ServerVariables["HTTP_CF_IPCOUNTRY"]
por servidor backend, pero es demasiado lento, necesito una solución Angular o TypeScript para esto.
Si desea tomar la ubicación desde el lado frontal, podemos obtener la ubicación simplemente a través de javascript
var x = document.getElementById("demo"); function getLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition); } else { x.innerHTML = "Geolocation is not supported by this browser."; } } function showPosition(position) { x.innerHTML = "Latitude: " + position.coords.latitude + "<br>Longitude: " + position.coords.longitude; }
Esto le pedirá al usuario del navegador que comparta la ubicación, y listo.
En Angular 2 Component implementa OnInit, coloque ese código dentro de ngOnInit
import { Component, OnInit } from '@angular/core'; export class LocationComponent implements OnInit { ngOnInit(){ if(window.navigator.geolocation){ window.navigator.geolocation.getCurrentPosition(this.setPosition.bind(this)); }; } } }
Solución encontrada usando el ejemplo de Vivek.
ngOnInit() { if (window.navigator && window.navigator.geolocation) { window.navigator.geolocation.getCurrentPosition( position => { this.geolocationPosition = position, console.log(position) }, error => { switch (error.code) { case 1: console.log('Permission Denied'); break; case 2: console.log('Position Unavailable'); break; case 3: console.log('Timeout'); break; } } ); }; }