Google使用javascript和PHP映射标记

Google使用javascript和PHP映射标记,javascript,php,google-maps,Javascript,Php,Google Maps,我正在构建一个应用程序,它有一个人名、信息和当前位置的数据库。 我使用GoogleMapsJavaScriptAPI创建了一个地图,并标记了您的当前位置。然而,我似乎无法使用PHP循环为数据库中的每个人放置带有信息窗口的标记。这是我的密码: lat = position.coords.latitude; lon = position.coords.longitude; //init map myOptions = { center: new google.maps.LatLng(

我正在构建一个应用程序,它有一个人名、信息和当前位置的数据库。 我使用GoogleMapsJavaScriptAPI创建了一个地图,并标记了您的当前位置。然而,我似乎无法使用PHP循环为数据库中的每个人放置带有信息窗口的标记。这是我的密码:

    lat = position.coords.latitude;
lon = position.coords.longitude;

//init map
myOptions = {
   center: new google.maps.LatLng(lat, lon),
   zoom: 15,
   mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

var image = 'http://i43.tinypic.com/v48d1w.png';
var loca = new google.maps.LatLng(lat, lon);
var currnetLocationMarker = new google.maps.Marker({
position: loca,
map: map,
animation: google.maps.Animation.DROP,
icon: image
});
var contentString;
var marklatlng;
<?php
require("connect.php");
$query = mysql_query("SELECT * FROM gigs");
$i = 0;
while($data = mysql_fetch_array($query))
{
echo "
contentString = 'Name: <b>" . $data['name'] . "</b><br> Info: <b>" . $data['desc'] . "    </b>';
var infowindow" . $i . " = new google.maps.InfoWindow({
content: contentString
});
marklatlng = new google.maps.LatLng(" . $data['lat'] . ", " . $data['lng'] . ");
var marker" . $i . " = new google.maps.Marker({
position: markLatlng,
map: map,
});
google.maps.event.addListener(marker" . $i . ", 'click', function() {
infowindow" . $i . ".open(map,marker" . $i . ");
});

";
$i++;
}
?>
lat=位置坐标纬度;
lon=位置坐标经度;
//初始映射
myOptions={
中心:新google.maps.LatLng(lat,lon),
缩放:15,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
map=new google.maps.map(document.getElementById(“map_canvas”),myOptions);
var图像处理http://i43.tinypic.com/v48d1w.png';
var loca=new google.maps.LatLng(lat,lon);
var currnetLocationMarker=新的google.maps.Marker({
位置:失水事故,
地图:地图,
动画:google.maps.animation.DROP,
图标:图像
});
var-contentString;
var marklatlng;

当我编写一个类似的应用程序时,我使用php编写表示我的数据的javascript数组字符串,然后在为api构建字符串时使用straight js。然而,由于我发现编写一个PHP驱动的API来返回数据库的JSON对象是多么容易,所以我只使用jQuery查询我的自制API中的JSON数据,然后使用它。使用SLIM确实非常容易。下面是一个链接,最好对数据进行json编码,将其传递给javascript中的变量,然后使用javascript对其进行循环。更好的方法是使用AJAX请求获取数据

<?php
function fetchGigs() {
  $gigs = new Array();
  $query = mysql_query("SELECT * FROM gigs");
  while($gig = mysql_fetch_array($query)) {
    $gigs[] = $gig; 
  }
  return $gigs;
}

var createMarkerAt=功能(纬度、液化天然气){
var-latLng,标记;
latLng=新的google.maps.latLng(lat,lng);
marker=新的google.maps.marker({
位置:latLng,
地图:地图,
});
返回标记;
}
var createMarkerForGig=函数(gig){
var标记,信息;
标记=createMarkerAt(吉格纬度,吉格液化天然气);
info=新建google.maps.InfoWindow({
内容:“名称:”+gig.Name+”
信息:“+gig.desc+”' }); google.maps.event.addListener(标记'click',函数(){ 信息打开(地图、标记); }); 返回标记; } //为所有演出添加标记。 var len=gigs.长度;
对于(var i=0;iSorry,我只是不明白你在说什么。我只是想一遍又一遍地循环一些javascript代码,直到我对数据库中的每一条数据都这样做。对不起,我对javascript不是很熟悉。你能给我一个代码示例吗?正在做,但是如果你想用一个大表而不使用ajax来尝试,你会ng获得一个非常慢的网站。这应该可以。但我郑重建议使用AJAX和PDO而不是
mysql\u query
之类的东西。由于某些原因,这不起作用,它会返回一个白色屏幕。可能是循环中的问题?你能看到任何错误吗?确保在php中打开错误报告(
error\u reporting(E\u ALL | E\u STRICT);ini\u set(“显示错误”,1);
<script>
// your other code...
var gigs = <?php echo json_encode(fetchGigs()); ?>

var createMarkerAt = function(lat, lng) {
  var latLng, marker;
  latLng = new google.maps.LatLng(lat, lng);
  marker = new google.maps.Marker({
    position: latLng,
    map: map,
  });
  return marker;
}

var createMarkerForGig = function (gig) {
  var marker, info;
  marker = createMarkerAt(gig.lat, gig.lng);
  info = new google.maps.InfoWindow({
    content: 'Name: <b>"' + gig.name + '"</b><br>Info: <b>"' + gig.desc + '"</b>'
  });
  google.maps.event.addListener(marker, 'click', function() {
    info.open(map, marker);
  });
  return marker;
}

// Add markers for all the gigs.
var len = gigs.length;
for (var i = 0; i<len; i++) {
  createMarkerForGig(gigs[i]);
}
</script>