因为这个可能和个人隐私相关,除非用户允许否则不能使用
IE9,Firefox,Chrome,Opera和Safari 5都支持这个特性。
注意:如果使用带有GPS的设备,例如iphone,Geolocation将会更加准确。
// 定位对象方案2:geolocation获取经纬度
测试 手机不支持 这种定位
https://blog.csdn.net/for12/article/details/52803787
https://segmentfault.com/q/1010000000200734
最后也实现了 效果 app原生获取gps定位 坐标后 传给 h5 再转为 百度坐标
再获取城市信息
这样定位比较准确
采用浏览器定位 也就是 js百度定位 只能定位到 大概的城市 不准
直接定位实时位置。
GPS系统的前身是美军研制的一种子午仪卫星定位系统(Transit),1958年研制,1964年正式投入使用。该系统用5到6颗卫星组成的星网工作,每天最多绕过地球13次,并且无法给出高度信息,在定位精度方面也不尽如人意。
然而,子午仪系统使得研发部门对卫星定位取得了初步的经验,并验证了由卫星系统进行定位的可行性,为GPS系统的研制埋下了铺垫。由于卫星定位显示出在导航方面的巨大优越性及子午仪系统存在对潜艇和舰船导航方面的巨大缺陷。
美国海陆空三军及民用部门都感到迫切需要一种新的卫星导航系统。
为此,美国海军研究实验室(NRL)提出了名为Tinmation的用12到18颗卫星组成10000km高度的全球定位网计划,并于67年、69年和74年各发射了一颗试验卫星,在这些卫星上初步试验了原子钟计时系统,这是GPS系统精确定位的基础。
而美国空军则提出了621-B的以每星群4到5颗卫星组成3至4个星群的计划,这些卫星中除1颗采用同步轨道外其余的都使用周期为24h的倾斜轨道,该计划以伪随机码(PRN)为基础传播卫星测距信号,其强大的功能,当信号密度低于环境噪声的1%时也能将其检测出来。
以上内容参考:百度百科-GPS定位
思路:把ajax获取的数据,替换mapPoints
<script type="text/javascript">var mapPoints = []
var map = new BMap.Map("container")
$(function () {
$.ajax({
url: "/BaiduMap/GetPoints",
type: 'get',
success: function (data) {
mapPoints = data//替换数据
if (mapPoints != null)
{
InitMap()
for (var i=0 i < mapPoints.length i++) {
var points = new BMap.Point(mapPoints[i].y, mapPoints[i].x)//创建坐标点
var opts = {
width: 250,
height: 100,
title: mapPoints[i].title
}
var label = new BMap.Label(mapPoints[i].branch, {
offset: new BMap.Size(25, 5)
})
var infoWindows = new BMap.InfoWindow(mapPoints[i].con, opts)
markerFun(points, label, infoWindows)
}
}
}
})
})
function InitMap() {
var point = new BMap.Point(120.382029, 30.312903)
map.centerAndZoom(point, 9)
var marker = new BMap.Marker(point)
//var mapPoints = [//这里读到数据就是没显示定位,看了下,显示出来的是字符串,mapPoints 内加载的内容都是对象
//{ x: 30.312903, y: 120.382029, title: "A", con: "我是A", branch: "老大" },
//{ x: 30.215855, y: 120.024568, title: "B", con: "我是B", branch: "老二" },
//{ x: 30.18015, y: 120.174968, title: "C", con: "我是C", branch: "老三" },
//{ x: 30.324994, y: 120.164399, title: "D", con: "我是D", branch: "老四" },
//{ x: 30.24884, y: 120.305074, title: "E", con: "我是E", branch: "老五" }
//]
var i = 0
map.addOverlay(marker)
map.enableScrollWheelZoom(true)
}
// 函数 创建多个标注
function markerFun(points, label, infoWindows) {
var markers = new BMap.Marker(points)
map.addOverlay(markers)
markers.setLabel(label)
markers.addEventListener("click", function (event) {
console.log("0001")
map.openInfoWindow(infoWindows, points)//参数:窗口、点 根据点击的点出现对应的窗口
})
}
</script>
后台:
public JsonResult GetPoints(){
List<PointView> lstPoint = new List<PointView>{
new PointView{x=30.312903M,y=120.382029M,title="A",con="我是A",branch="老大"},
new PointView{x=30.215855M,y=120.024568M,title="B",con="我是B",branch="老二"},
new PointView{x=30.18015M,y=120.174968M,title="C",con="我是C",branch="老三"},
new PointView{x=30.324994M,y=120.164399M,title="D",con="我是D",branch="老四"},
new PointView{x=30.24884M,y=120.305074M,title="E",con="我是E",branch="老五"}
}
JsonResult jsonResult = new JsonResult()
jsonResult.Data = lstPoint
jsonResult.JsonRequestBehavior = JsonRequestBehavior.AllowGet
return jsonResult
}
public class PointView
{
public decimal x { get set }
public decimal y { get set }
public string title { get set }
public string con { get set }
public string branch { get set }
}
效果: