【发布时间】:2017-07-21 12:32:18
【问题描述】:
目前正在从事一个小型项目,无法解决我在通过 API 更新 Google 地图上的位置时遇到的问题。
快速运行(这部分工作正常) - 有一个带有一些 lat 和 long 值的 MySQL 数据库 - 单击一个按钮我使用 Ajax 来点击一个 PHP 脚本,该脚本从数据库中提取一个随机的 lat 和 long 并编码为 json。 - 我成功检索了 lat 和 long 值,并可以提醒它们或将它们插入页面的任何位置。
这就是我的问题所在。我正在使用 Google Maps API sn-p,它工作得非常好。它显示地图,如果我在单击按钮时触发的函数中硬编码纬度和经度值,它会将地图重新居中到新位置。但是,当我通过 Ajax 脚本插入 lat 和 long 值时,它不会更新位置。
这是我的代码(只有前端 jQuery。PHP 和 ajax 控制器工作。)
<script>
var map;
function initialize()
{
map = new google.maps.Map(document.getElementById('map-canvas'), {
center: new google.maps.LatLng(48.1293954,12.556663),//Setting Initial Position
zoom: 2
});
}
function newLocation(newLat,newLng)
{
map.setCenter({
lat : newLat,
lng : newLng
});
}
google.maps.event.addDomListener(window, 'load', initialize);
$(document).ready(function ()
{
$("#1").on('click', function ()
{
// Get lat and long new values from MySQL
$.ajax({
type: "POST",
url: 'core/ajax_controller.php?c=controller',
data: $(this).serialize(),
dataType: 'json',
success: function(data) {
newLocation(data[0],data[1]);
map.setZoom(15);
}
});
});
});
</script>
从上面的例子。例如,如果我警告或打印包含 lat 值的数据 [0],它会将值显示为纯文本 - “26.1725364”。但是,当将其添加到地图函数“newLocation”时,它似乎并没有传递给该函数,而是重新定位地图。
但是,如果我删除 Ajax 并仅使用以下内容,以及硬编码的纬度和经度坐标。可以,每次点击按钮都会更新地图中心。
$("#1").on('click', function ()
{
newLocation(12.12345678,12.12345678);
map.setZoom(15);
所以,看来我的问题是在另一个函数中以某种方式访问第二个 javascript 函数“newLocation”。
有没有办法正确地做到这一点?
谢谢
【问题讨论】:
-
这只是一个快速的猜测......但是在成功回调中尝试:
newLocation(data[0].lat,data[0].lng);。或newLocation(data.lat,data.lng); -
谢谢@LouysPatriceBessette,不过不开心。这些问题似乎与抓取数据的功能无关。正如我所说,如果我移动 newLocation(12.12345678,12.12345678);在 ajax 请求之外,它使用硬编码值工作。所以这个错误可能与在当前函数内部调用该函数有关。
-
在回调中添加:
console.log(JSON.stringify(data));并发布结果。 ;) -
@LouysPatriceBessette - ["-33.847973","150.6517684"]
标签: php jquery ajax google-maps google-maps-api-3