winWidth=document.body.clientWidth||document.documentElement.clientWidth
winHeight=document.body.clientHeight||document.documentElement.clientHeight
那么中心点应该就是取1/2
Var center={centerW:winWidth/2,centerH:winHeight/2}
可以这么试一下在你的页面上某个位置放一个div或者就用你页面上已有的某个元素也行,当用户滚动的时候这个div相对于浏览器的顶部或底部的距离肯定会变化,然后你通过这个距离来判断用户浏览到当前页面的什么位置了。
参考一下,我没试过....
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/htmlcharset=UTF-8">
<script type="text/javascript">
function a(){
var st = document.documentElement.scrollTop//滚去的高度
var ch = document.documentElement.clientHeight//窗口的高度
var at = document.getElementById("a").offsetTop//元素离页面顶部的高度
var v = ch - (at - st)//元素离窗口底部的高度,为负的话表示元素还在窗口底部下面
alert("距离底部的高度为:"+v)
}
</script>
</head>
<body>
<div>
test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/><input type="button" value="test" onclick="a()"/>
test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/><input type="button" value="test" onclick="a()"/>
test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/><input type="button" value="test" onclick="a()"/>
test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/><input type="button" value="test" onclick="a()"/>
test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/><input type="button" value="test" onclick="a()"/>
<div id="a" style="width:100pxheight:1pxbackground-color: red"></div>
test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/>test<br/><input type="button" value="test" onclick="a()"/>
</div>
</body>
</html>
其实有了 Haversine 公式,两点坐标之后就很简单了。你提供的上海范围太大,且没有坐标,下面例子以上海虹桥机场为参考(纬度:31.2,经度:121.4)。
要从地名获得它的经纬度应该需要有一个庞大的数据库,这点没有仔细研究过。谷歌地图应该会提供此类的 API。你可以百度一下"经纬度查询",有很多网站提供此功能。
测试的时候最好用 IE9 或 Opera 高版本,Firefox 和 Safari 有时会获取不到地理位置,Chrome 会自动屏蔽本地文件。
<script type="text/javascript">// Haversine 公式
function getDistanceFromLatLonInKm(lat1, lon1, lat2, lon2) {
var R = 6371
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
return d
}
function deg2rad(deg) {
return deg * (Math.PI / 180)
}
// 上海虹桥机场经纬度
var lat = 31.2, lon = 121.4
// 尝试获取地理位置
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(pos) {
var d = getDistanceFromLatLonInKm(
pos.coords.latitude,
pos.coords.longitude,
lat, lon).toFixed(2)
alert("当前位置距上海虹桥机场:" + d + "公里")
})
}
else {
alert("浏览器不支持 geolocation")
}
</script>