2017-02-03 10 views
0

Я изучаю код с кодировкой для чайников Никила Абрахама. В книге есть проект с кодом, включенным для разработки приложения для ресторана, чтобы отправить предупреждение клиенту в течение 5-10 минут ходьбы от ресторана с купонным для ресторана при нажатии на кнопку регистрации ,Проблема с оповещением - Геолокация с использованием формулы расстояния от раковины

У меня есть весь код, используя html, css и javascript через codepen, и по какой-то причине предупреждение не появится.

Я исследовал, где я, возможно, ошибаюсь, но я действительно застрял.

Вот код:

код HTML:

<head> 
<title>McDuck's App</title> 
</head> 
<body> 
<h1>McDuck's Local Offers</h1> 

<button onclick="getLocation()">CheckIn</button> 

<div id="geodisplay"/> 
<div id="effect"/> 


</body> 

устанавливаемыми сотовыми:

body { 
text-align: center; 
background: white; 
} 

h1, h2, h3, p { 
font-family: Sans-Serif; 
color: black; 
} 

p { 
font-size: 1em; 
} 

Javascript:

function getLocation() { 
if (navigator.geolocation){ 
navigator.geolocation.getCurrentPosition(showLocation); 
} 
} 

// магазин местоположение

function showLocation(position){ 
var mcduckslat=53.510207; 
var mcduckslon=-6.399289; 

// текущее местоположение

var currentpositionlat=position.coords.latitude; 
var currentpositionlon=position.coords.longitude; 

// вычислить расстояние между текущим местоположением и расположением McDuck в

var distance=getDistanceFromLatLonInMiles(mcduckslat, mcduckslon,  
currentpositionlat, currentpositionlon); 

//displays the locaton using .inner.HTML property and the lat & long  
coordinates from your current location 

document.getElementById("geodisplay").inner.HTML="Latitude: " +  
currentpositionlat + "<br>Longitude: " + currentpositionlon; 

} 

//haversine distance formula 

    function getDistanceFromLatLonInKm(lat1, lon1, lat2, lon2) { 
    var R = 6371; //Radius of earth in km 
    var dLat = deg2rad(lat2-lat1); 
    var dLon = deg2rad(lon2-lon1); 
    var a = 
    Math.sin(dLat/2) * Math.sin(dLat/2) + 
    Math.cos(deg2rad(lat1)) *        
    Math.cos(deg2rad(lat2)) *  
    Math.sin(dLon/2) * Math.sin(dLon/2); 

var c = 2 * Math.atan2(Math.sqrt(a), 
      Math.sqrt(1-a)); 
var d = R * c * 0.372823; //Distance in miles           
return d; 
} 

function deg2rad(deg) { 
    return deg * (Math.PI/180); 
} 

alert(distance); 

if (distance < 0.5) { 
alert("You get a free meal"); 
} 
else { 
alert("Thanks for checking in!"); 
} 

Ссылка на copepen http://codepen.io/Saharalara/pen/Grxmmj

+0

Помог ли мой ответ? Нажмите ссылку в верхней части моего ответа, чтобы увидеть, как работает решение. – taylorsabell

ответ

0

TL; DR: Вот скрипка, чтобы увидеть, как она работает ING: https://jsfiddle.net/pnruje2g/6/


После мастерить с этим на некоторое время, я нашел 4 вопросов.

Первый - это устаревание getCurrentPosition() в среде, отличной от HTTPS, например CodePen, в Google Chrome.

Здесь нет точного сообщения я получаю в Google Chrome:

getCurrentPosition() и watchPosition() больше не работать на небезопасном происхождения. Чтобы использовать эту функцию, вам следует переключить приложение на безопасное происхождение, например HTTPS. См. https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins для более подробной информации.

Возможно, вы захотите попробовать это в другом браузере, если используете Google Chrome. Однако он работает на местных сайтах.

Следующая проблема вызывает функцию getDistanceFromLatLonInMiles(), которой не существует. Я заменил его на звонок getDistanceFromLatLonInKm().

Третья проблема заключается в попытке присвоить свойство, которого не существует, вы ссылаетесь на inner.HTML вместо innerHTML.

Четвертая проблема - расположение ваших оповещений. В настоящее время они просто сидят у основания вашего JS-файла, ничего не делая. Мы хотим показать предупреждения после завершения вычислений. Я переместил ваши оповещения в конец функции showLocation().

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

Дайте мне знать, если это поможет.

+0

Это сработало! Большое вам спасибо за вашу помощь. Действительно помог мне понять гораздо больше. У меня было ощущение, что проблема с милями. Еще раз спасибо, очень ценю! – Sarah

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

  • Нет связанных вопросов^_^