Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按边界框加载地图标记,但它们会溢出视口以东_Javascript_Php_Mysql_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 按边界框加载地图标记,但它们会溢出视口以东

Javascript 按边界框加载地图标记,但它们会溢出视口以东,javascript,php,mysql,google-maps,google-maps-api-3,Javascript,Php,Mysql,Google Maps,Google Maps Api 3,我通过检查地图标记是否在Map.getBounds()中,然后使用该数据过滤SQL查询,将地图标记加载到Google Maps API(v3)。它工作得很好,除了标记加载似乎只受视口的南北边缘的限制外——当我向左或向右平移时,仍然有标记填充到初始视口位置的东西两侧 如您所见,所有可能的标记都沿东/西方向加载,即使它们不在原始边界框中 PHP/MySQL: function get_addresses_from_bounds($swLat = null, $swLong = null, $ne

我通过检查地图标记是否在Map.getBounds()中,然后使用该数据过滤SQL查询,将地图标记加载到Google Maps API(v3)。它工作得很好,除了标记加载似乎只受视口的南北边缘的限制外——当我向左或向右平移时,仍然有标记填充到初始视口位置的东西两侧

如您所见,所有可能的标记都沿东/西方向加载,即使它们不在原始边界框中

PHP/MySQL:

function get_addresses_from_bounds($swLat = null, $swLong = null, $neLat = null, $neLong = null) {
    if(!$swLat || !$swLong || !$neLat || !$neLong) {
        return;
    }

    $q_where = [];

    $q = "SELECT `latitude`, `longitude` FROM `customer_cards` as `c` INNER JOIN `geo_location` as `g` ON `g`.`placename` = `c`.`delivery_postcode`";

    //Bounds
    $q_where[] = ":swLat < :neLat AND `latitude` BETWEEN :swLat AND :neLat) OR (:neLat < :swLat AND `latitude` BETWEEN :neLat AND :swLat";
    $q_where[] = ":swLong < :neLong AND `longitude` BETWEEN :swLong AND :neLong) OR (:neLong < :swLong AND `longitude` BETWEEN :neLong AND :swLong";

    if(!empty($q_where)) {
        $q .= ' WHERE ( ' . implode(' ) && ( ', $q_where) . ')';
    }

    $stmt = $pdo->prepare($q);

    // Assign variables
    $stmt->bindParam(':swLat', $swLat, PDO::PARAM_STR);
    $stmt->bindParam(':swLong', $swLong, PDO::PARAM_STR);
    $stmt->bindParam(':neLat', $neLat, PDO::PARAM_STR);
    $stmt->bindParam(':neLong', $neLong, PDO::PARAM_STR);

    $stmt->execute();
    $members = $stmt->fetchAll();

    for ($i = 0; $i <= count($members); $i++) {
        unset($members[$i][0]);
        unset($members[$i][1]);
    }

    return $members;
}
函数从边界获取地址($swLat=null,$swLong=null,$neLat=null,$neLong=null){
如果(!$swLat | |!$swLong |!$neLat | |!$neLong){
返回;
}
$q_其中=[];
$q=“从‘客户卡’中选择‘纬度’、‘经度’作为‘c’内部连接‘地理位置’作为‘g’在‘g’上。‘地名’=‘c’。‘交货’邮政编码’”;
//界限
$q_,其中[]=“:swLat<:neLat和`纬度`介于:swLat和:neLat之间)或(:neLat<:swLat和`纬度`介于:neLat和:swLat之间”;
$q_,其中[]=“:swLong<:neLong和`经度'介于:swLong和:neLong之间)或(:neLong<:swLong和`经度'介于:neLong和:swLong之间”;
如果(!空($q_where)){
$q.='WHERE('.内爆(')&(',$q_WHERE)。';
}
$stmt=$pdo->prepare($q);
//分配变量
$stmt->bindParam(':swLat',$swLat,PDO::PARAM_STR);
$stmt->bindParam(':swLong',$swLong,PDO::PARAM_STR);
$stmt->bindParam(':neLat',$neLat,PDO::PARAM_STR);
$stmt->bindParam(':neLong',$neLong,PDO::PARAM_STR);
$stmt->execute();
$members=$stmt->fetchAll();
对于($i=0;$i:swLat和“纬度”<:neLat和“经度”>:swLong和“经度”<:neLong

更新2:我在上面的查询中找到了它,但不确定是怎么得到的,因为它是在一天漫长的头部攻击结束后得到的。所以我没有添加这个作为回答

似乎你不记得平移/缩放时加载/推送的标记……请同时显示代码(javascript)在这里呈现标记并调用phpfunction@scaisEdge为了简洁起见,我从代码段中删除了一些函数,标记函数和其他代码段在我的修订版中可见,尽管纬度和经度列的数据类型是什么?请注意,当它是字符串类型时,比较两个字符串,例如
2
将大于
12
当您平移/缩放时,您似乎不记得加载/移动标记…请同时显示代码(javascript)在这里呈现标记并调用phpfunction@scaisEdge为了简洁起见,我从代码段中删除了一些函数,标记函数和其他代码段在我的修订版中可见,尽管纬度和经度列的数据类型是什么?请注意,当它是字符串类型时,比较两个字符串,例如
2
将大于
12
WHERE `latitude` > :swLat AND `latitude` < :neLat AND `longitude` > :swLong AND `longitude` < :neLong