【发布时间】:2018-05-24 22:51:56
【问题描述】:
下面是最初用于将用户定义的数据保存到数据库中的 Google 地图 API 代码,但我对其进行了调整以在用户位置标记中加载表单。现在保存功能没有帮助。请帮忙
注册为放债人。
细胞: 企业名称: 抵押品:+ 笔记本电脑、手机、电视。 工资支持贷款 开放谈判 数量可用:+ 低于 K3000 超过K3000
<div id="message">You have been registered as a money lender at this location.</div>
<script>
var map;
var marker;
var infowindow;
var messagewindow;
function initMap() {
var zambia = {lat: -15.376085, lng: 28.366237};
map = new google.maps.Map(document.getElementById('map'), {
center: zambia,
zoom: 7
});
var infoWindow = new google.maps.InfoWindow;
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var pos = {
lat: position.coords.latitude,
lng: position.coords.longitude
};
infoWindow.setPosition(pos);
infoWindow.setContent(document.getElementById('form'));
infoWindow.open(map);
map.setCenter(pos);
}, function() {
handleLocationError(true, infoWindow, map.getCenter());
});
} else {
// Browser doesn't support Geolocation
handleLocationError(false, infoWindow, map.getCenter());
}
}
function handleLocationError(browserHasGeolocation, infoWindow, pos) {
infoWindow.setPosition(pos);
infoWindow.setContent(browserHasGeolocation ?
'We cant seem to find you my friend.' :
'Your browser doesn\'t support geolocation.');
infoWindow.open(map);
}
function saveData() {
var name = escape(document.getElementById('name').value);
var address = escape(document.getElementById('address').value);
var collateral = document.getElementById('collateral').value;
var type = document.getElementById('type').value;
var latlng = getCurrentPosition(pos);
var url = 'phpsqlinfo_addrow.php?name=' + name + '&address=' + address + '&collateral=' + collateral +
'&type=' + type + '&lat=' + latlng.lat() + '&lng=' + latlng.lng();
downloadUrl(url, function(data, responseCode) {
if (responseCode == 200 && data.length <= 1) {
infowindow.close();
messagewindow.open(map, marker);
}
});
}
function downloadUrl(url, callback) {
var request = window.ActiveXObject ?
new ActiveXObject('Microsoft.XMLHTTP') :
new XMLHttpRequest;
request.onreadystatechange = function() {
if (request.readyState == 4) {
request.onreadystatechange = doNothing;
callback(request.responseText, request.status);
}
};
request.open('GET', url, true);
request.send(null);
}
function doNothing () {
}
</script>
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=API_KEY&callback=initMap">
</script>
【问题讨论】:
-
这个问题很可能发生在服务器端,所以我建议查看那里的日志,看看为什么请求不被接受。我最初的猜测是您可能需要转义 lat/lng 组件,因为它们包含一个点。
-
另外我没有看到
getPosition的代码,我强烈建议您编辑发布的代码以不包含您的 Google API 密钥 -
它应该是 getCurrentPosition。但它仍然无法正常工作。并感谢您指出不要包含我的密钥
标签: javascript php mysql google-maps google-maps-api-3