user2793161
user2793161

Reputation: 79

Geolocation, various options tried but failed

I have two IP Geolocation solutions, but the code doesn't seem to work for both solutions.

Solution 1:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
    $.get("http://ipinfo.io", function (response) {
        $("#ip").html("IP: " + response.ip);
        $("#address").html("Location: " + response.city + ", " + response.region);
        $("#details").html(JSON.stringify(response, null, 4));
    }, "jsonp");
</script>
</head>
<body>
<h3>Client side IP geolocation using <a href="http://ipinfo.io">ipinfo.io</a></h3>

<hr/>
<div id="ip"></div>
<div id="address"></div>
<hr/>Full response: <pre id="details"></pre>
</body>
</html>

This one shows 'Full response' on the screen, so the result of the code (the location) should be there, but it's blank.

Solution 2:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript" src="gears_init.js"></script>
<script type="text/javascript">
var geo = google.gears.factory.create('beta.geolocation');

function updatePosition(position) {
  alert('Current lat/lon is: ' + position.latitude + ',' + position.longitude);
}

function handleError(positionError) {
  alert('Attempt to get location failed: ' + positionError.message);
}

geo.getCurrentPosition(updatePosition, handleError);
</script>
</head>
<body>

</body>
</html>

The second solution is from a question here, but that person had this code working, but wanted to calculate the distance between two locations, but I can't seem to get the basic functionality work, it shows a blank page, no alerts or anything.

Who can help me solve these problems. Solving one of them is enough :)

Upvotes: 0

Views: 762

Answers (1)

eyevan
eyevan

Reputation: 1473

The first solution doesn't work because you use jQuery's $ object, but have not imported jQuery first. Here's code that works:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<script type="text/javascript">
    $.get("http://ipinfo.io", function (response) {
        $("#ip").html("IP: " + response.ip);
        $("#address").html("Location: " + response.city + ", " + response.region);
        $("#details").html(JSON.stringify(response, null, 4));
    }, "jsonp");
</script>
</head>
<body>
<h3>Client side IP geolocation using <a href="http://ipinfo.io">ipinfo.io</a></h3>

<hr/>
<div id="ip"></div>
<div id="address"></div>
<hr/>Full response: <pre id="details"></pre>
</body>
</html>

As for the second solution, it seems to be using Google Gears API, which seems to be no longer available -- so you won't have any luck with that.

Upvotes: 1

Related Questions