javascript - 为什么我的谷歌地图 Lat/Lng 变量不存储任何内容?
问题描述
我目前正在为大学做一个项目,我正在尝试在我的网站上实施谷歌地图
ReportStolenBike.js:
var mapCenter = new google.maps.LatLng(51.8979988098144,-2.0838599205017);
var geocoder = new google.maps.Geocoder();
var infowindow = new google.maps.InfoWindow();
var myMap;
var marker;
function initialize(){
var mapOptions = {
zoom: 15,
center: mapCenter
};
myMap = new google.maps.Map(document.getElementById("mapInput"), mapOptions);
marker = new google.maps.Marker({
map: myMap,
position: mapCenter,
draggable: true
});
function markerDragged() {
var selectedPos = {'latLng': marker.getPosition()};
geocoder.geocode(selectedPos, showAddressInInfoWindow);
}
google.maps.event.addListener(marker, 'dragend', markerDragged);
function showAddressInInfoWindow(results) {
if (results[0]) {
infowindow.setContent(results[0].formatted_address);
infowindow.open(myMap, marker);
}
}
}
google.maps.event.addDomListener(window, 'load', initialize);
$('#formReportStolen').on('submit', function(e) {
var formData = new FormData(this);
var lat = marker.getPosition().lat();
var lng = marker.getPosition().lng();
formData.append("lat", lat);
formData.append("lng", lng);
e.preventDefault();
$.ajax({
url: "PublicReportStolenDAO",
method : "POST",
data: formData,
contentType: false,
cache: false,
processData: false,
success:function(echoedMsg) {
if (echoedMsg == "True") {
alert("Successfully reported.");
}
}
});
});
因此,在那个 java 脚本类中,我正在显示我的谷歌地图并尝试获取用户的当前位置。我的地图有一个弹出窗口,显示我的地图确实引用了纬度和经度,但是当试图将它们存储到我的 sql 数据库中时,什么都没有存储。
PublicReportStolenDAO.php
<?php
function StolenReg(){
$bikeID = $_POST['txtBikeID'];
$date = $_POST['txtDateofTheft'];
$lat = $_POST['lat'];
$lng = $_POST['lng'];
include "../../include/config.php";
$verifyFuncBike = "SELECT email FROM `tbl_user` WHERE email = '$email'";
$resultBike = mysqli_query($connection,$verifyFuncBike);
$rowBike = mysqli_fetch_array($resultBike,MYSQLI_ASSOC);
$countBike = mysqli_num_rows($resultBike);
if($countBike == 1) {
$sql = "INSERT INTO `tbl_stolen`(BikeID, Date, Lat, Lng)".
" VALUES ".
"('$bikeID', '$date', '$lat', '$lng')";
if(mysqli_query($connection, $sql)) {
echo "Report successfully sent, please return back to the site.";
echo $lat;
echo $lng;
} else {
echo mysqli_error($connection);
}
}else {
echo "Error, please return back to the site and try again.";
}
mysqli_close($connection);
}
stolenReg();
?>
抱歉代码可能很糟糕,我对 Web 开发很陌生
解决方案
我不认为这是最好的答案。但在您的代码中使用
var lat = marker.getPosition().lat();
这不是获取坐标的功能。要获得您的坐标,您需要进行地理定位。所以应该是
var lat = position.coords.latitude
var lat = position.coords.longitude
为确保您的位置,您可以使用此
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var lat = position.coords.latitude
var lat = position.coords.longitude
$.ajax({
do your ajax
});
});
}
对不起我的语言不好。希望这对你有帮助。
推荐阅读
- javascript - 用 Javascript 编写的 Rails 工作者?
- ssis - 在 SQL Server 代理 T-SQL 作业步骤中选择哪个“运行方式”
- opencv - Opencv ONNX 支持
- swift - 如何移动字符串的范围?
- angularjs - 如何更改边框颜色,仅在未选中和必需的情况下?angularJS,选择选中
- amazon-web-services - 实时收集大量事件时的 AWS firehose 或类似架构建议
- java - Admob 仅显示在 XML 之上
- embedded - 为什么在为 K64F mbed 板运行 pyocd list 时出现错误“没有连接可用的调试探针”?
- anylogic - 不允许叉车通过网络中的节点
- javascript - 是否可以修改如何在网络浏览器上退出全屏视频?