Web mobile web development, use of CSS inline style

Posted by tozanni on Tue, 18 Jan 2022 17:31:34 +0100

Get geographic location information using HTML5

How to use HTML5 geolocation

For example, geoml5 supports more precise location functions on modern handheld devices, especially HTML5. First, we need to check whether the user's device browser supports geographic positioning, and if so, obtain geographic information. Note that this feature may infringe the user's privacy. Unless the user agrees, the user's location information is unavailable, so we will prompt whether to allow geolocation when accessing the application. Of course, we can choose to allow it.

function getLocation(){
  if (navigator.geolocation){
  navigator.geolocation.getCurrentPosition(showPosition,showError);
  }else{
  alert(\\\"The browser does not support geolocation.\\\");
  }
  }

The above code can know that if the user equipment supports geolocation, run the getcurrentposition () method. If getCurrentPosition() runs successfully, a coordinates object is returned to the function specified in parameter showPosition. The second parameter showError of getCurrentPosition() method is used to handle errors, which specifies the function to run when obtaining user location fails.

Let's first look at the function showError(), which specifies some error code processing methods when obtaining the user's geographic location fails:

function showError(error){
  switch(error.code) {
  case error.PERMISSION_DENIED:
  alert(\\\"seek failed,The user refused to request geolocation\\\");
  break;
  case error.POSITION_UNAVAILABLE:
  alert(\\\"seek failed,Location information is not available\\\");
  break;
  case error.TIMEOUT:
  alert(\\\"seek failed,Request to get user location timed out\\\");
  break;
  case error.UNKNOWN_ERROR:
  alert(\\\"seek failed,Positioning system failure\\\");
  break;
  }
}

Let's take another look at the function showPosition(), and call coords' latitude and longitude to get the user's latitude and longitude.

function showPosition(position){
  var lat = position.coords.latitude; //latitude
  var lag = position.coords.longitude; //longitude
  alert(\\\'latitude:\\\'+lat+\\\',longitude:\\\'+lag);
  }

Use Baidu map and Google map interface to obtain user address

Above, we learned that the Geolocation of HTML5 can obtain the longitude and latitude of users, so what we need to do is to convert the abstract longitude and latitude into readable and meaningful real user geographic location information. Fortunately, baidu maps and Google maps provide this interface. We only need to transfer the longitude and latitude information obtained by HTML5 to the map interface, and the user's geographical location will be returned, including provincial and urban information, and even detailed geographical location information such as street and house number.

We first define the div to display the geographical location on the page and define id#baidu respectively_ Geo and id#google_geo. We just need to modify the key function showPosition(). Let's first look at the interaction of Baidu map interface. We send the longitude and latitude information to Baidu map interface through Ajax, and the interface will return the corresponding provincial and urban street information. Baidu map interface returns a string of JSON data. We can display the required information to div#baidu according to our needs_ geo. Note that the jQuery library is used here. You need to load the jQuery library file first.

function showPosition(position){
  var latlon = 
position.coords.latitude+\\\',\\\'+position.coords.longitude;
  //baidu
  var url = 
\\\"http://api.map.baidu.com/geocoder/v2/?ak=C93b5178d7a8ebdb830b9b557abce78b&callback=renderReverse&location=\\\"+latlon+\\\"&output=json&pois=0\\\";
  $.ajax({
  type: \\\"GET\\\",
  dataType: \\\"jsonp\\\",
  url: url,
  beforeSend: function(){
  $(\\\"#baidu_geo\").html(\ \ \ 'locating... \ \ \';
  },
  success: function (json) {
  if(json.status==0){
  $(\\\"#baidu_geo\\\").html(json.result.formatted_address);
  }
  },
  error: function (XMLHttpRequest, textStatus, errorThrown) {
  $(\\\"#baidu_geo\").html(latlon + \ \" address location acquisition failed \ \ \ ");
  }
  });
  });

Let's look at Google Maps interface interaction. Similarly, we send the longitude and latitude information to the Google map interface through Ajax, and the interface will return the corresponding provincial, urban and street details. The Google map interface also returns a string of JSON data, which is more detailed than that returned by Baidu map interface. We can display the required information to div#google according to our needs_ geo.

function showPosition(position){
  var latlon = position.coords.latitude+\\\',\\\'+position.coords.longitude;
  //google
  var url = 
\\\'http://maps.google.cn/maps/api/geocode/json?latlng=\\\'+latlon+\\\'&language=CN\\\';
  $.ajax({
  type: \\\"GET\\\",
  url: url,
  beforeSend: function(){
  $(\\\"#google_geo\").html(\ \ \ 'locating... \ \ \';
  },
  success: function (json) {
  if(json.status==\\\'OK\\\'){
  var results = json.results;
  $.each(results,function(index,array){
  if(index==0){
  $(\\\"#google_geo\\\").html(array[\\\'formatted_address\\\']);
  }
  });
  }
  },
  error: function (XMLHttpRequest, textStatus, errorThrown) {
  $(\\\"#google_geo\").html(latlon + \ \" address location acquisition failed \ \ \ ");
  }
  }); 
 }

The above code integrates Baidu map interface and Google map interface into the function showPosition(), which can be called according to the actual situation. Of course, this is just a simple application. We can develop many complex applications according to this simple example

last

The space is limited. The front-end preliminary notes, learning roadmap and front-end interview questions in the article are OK Click here for free Full PDF (including answer analysis).

The content outline of the selected front-end interview questions in 2021 includes HTML, CSS, JavaScript, jQuery, browser, HTTP, React and applet

The content outline of the selected front-end interview questions in 2021 includes HTML, CSS, JavaScript, jQuery, browser, HTTP, React and applet**

[external chain picture transferring... (img-WGGxWFiA-1626950504706)]

Topics: Front-end Interview Programmer