7 changed files with 190 additions and 23 deletions
@ -0,0 +1,106 @@ |
|||||
|
extends /layouts/root.pug |
||||
|
|
||||
|
block $$head |
||||
|
script. |
||||
|
window._AMapSecurityConfig = { |
||||
|
securityJsCode: "3cdaa3ebcf936fb3d7f4feff592b4daf" |
||||
|
} |
||||
|
+js("https://webapi.amap.com/maps?v=2.0&key=28fdbb4bfc3894850769251331f54569&plugin=AMap.Geolocation&plugin=AMap.CitySearch") |
||||
|
block $$content |
||||
|
div sadsa |
||||
|
|
||||
|
block $$scripts |
||||
|
script. |
||||
|
//- console.log("342") |
||||
|
// 确保在 API 加载完成后执行 |
||||
|
//- window.onLoad = function() { |
||||
|
|
||||
|
AMap.plugin('AMap.CitySearch', function () { |
||||
|
var citySearch = new AMap.CitySearch() |
||||
|
citySearch.getLocalCity(function (status, result) { |
||||
|
console.log(status, result) |
||||
|
if (status === 'complete' && result.info === 'OK') { |
||||
|
// 查询成功,result即为当前所在城市信息 |
||||
|
} |
||||
|
}) |
||||
|
}) |
||||
|
console.log("onLoad") |
||||
|
// 1. 创建 Geolocation 实例 |
||||
|
var geolocation = new AMap.Geolocation({ |
||||
|
enableHighAccuracy: true, // 开启高精度定位 |
||||
|
timeout: 10000, // 超时时间10秒 |
||||
|
maximumAge: 0, // 不缓存定位结果 |
||||
|
convert: true, // 强制开启坐标转换(关键!确保WGS-84转GCJ-02) |
||||
|
needAddress: true, // 强制返回转换后的地址信息(辅助验证转换结果) |
||||
|
showButton: false, // 隐藏定位按钮 |
||||
|
showMarker: false, // 不显示定位点 |
||||
|
showCircle: false, // 不显示精度圈 |
||||
|
panToLocation: false, // 不移动地图视野 |
||||
|
zoomToAccuracy: false // 不调整地图缩放 |
||||
|
}); |
||||
|
|
||||
|
console.log(geolocation) |
||||
|
// 2. 调用定位方法 |
||||
|
geolocation.getCurrentPosition(function(status,result){ |
||||
|
if(status=='complete'){ |
||||
|
onComplete(result) |
||||
|
}else{ |
||||
|
onError(result) |
||||
|
} |
||||
|
}); |
||||
|
//- function onComplete (data) { |
||||
|
//- console.log(data) |
||||
|
//- } |
||||
|
|
||||
|
//- function onError (data) { |
||||
|
//- console.log(data) |
||||
|
//- } |
||||
|
// 3. 监听定位成功事件 |
||||
|
//- AMap.event.addListener(geolocation, 'complete', onComplete); |
||||
|
|
||||
|
// 4. 监听定位失败事件 |
||||
|
//- AMap.event.addListener(geolocation, 'error', onError); |
||||
|
//- }; |
||||
|
|
||||
|
/** |
||||
|
* 定位成功回调函数 |
||||
|
* @param {Object} data - 定位结果对象 |
||||
|
*/ |
||||
|
function onComplete(data) { |
||||
|
console.log("定位成功:", data); |
||||
|
const result = { |
||||
|
经度: data.position.lng, |
||||
|
纬度: data.position.lat, |
||||
|
精度: data.accuracy + ' 米', |
||||
|
地址: data.formattedAddress || '无', |
||||
|
//- 城市: data.addressComponent.city || '无', |
||||
|
状态: '成功' |
||||
|
}; |
||||
|
console.log("解析后的定位信息:", result); |
||||
|
// 在这里处理你的定位结果 |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 定位失败回调函数 |
||||
|
* @param {Object} data - 失败信息对象 |
||||
|
*/ |
||||
|
function onError(data) { |
||||
|
console.error("定位失败:", data); |
||||
|
let errorMsg = '未知错误'; |
||||
|
switch(data.info) { |
||||
|
case 'PERMISSION_DENIED': |
||||
|
errorMsg = '用户拒绝了定位请求。'; |
||||
|
break; |
||||
|
case 'POSITION_UNAVAILABLE': |
||||
|
errorMsg = '无法获取当前位置。'; |
||||
|
break; |
||||
|
case 'TIMEOUT': |
||||
|
errorMsg = '定位请求超时。'; |
||||
|
break; |
||||
|
case 'UNKNOW_ERROR': |
||||
|
errorMsg = '发生未知错误。'; |
||||
|
break; |
||||
|
} |
||||
|
console.error("错误详情:", errorMsg); |
||||
|
// 在这里处理定位失败的情况 |
||||
|
} |
||||
Loading…
Reference in new issue