Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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
Php 谷歌地图APi3:地图上未显示多段线线段_Php - Fatal编程技术网

Php 谷歌地图APi3:地图上未显示多段线线段

Php 谷歌地图APi3:地图上未显示多段线线段,php,Php,好极了 我有一个非常简单的GoogleMaps实现,它允许我的用户在地图画布上的任意位置绘制多段线 重新启动时,多段线段在地图上可见,并且使用PHP将多段线存储在mySql数据库中 //编辑具有多段线的地图时: 如果用户决定更改多段线,我将从数据库中加载上一条多段线,并且该多段线对用户可见。当他们单击按钮绘制多段线时,将清除地图上的上一条多段线并允许他们重新开始,但是,一旦他们开始在地图上单击,新的多段线线段在地图上不可见,但会正确保存到数据库中 以下是我迄今为止所做的工作: var map;

好极了

我有一个非常简单的GoogleMaps实现,它允许我的用户在地图画布上的任意位置绘制多段线

重新启动时,多段线段在地图上可见,并且使用PHP将多段线存储在mySql数据库中

//编辑具有多段线的地图时:

如果用户决定更改多段线,我将从数据库中加载上一条多段线,并且该多段线对用户可见。当他们单击按钮绘制多段线时,将清除地图上的上一条多段线并允许他们重新开始,但是,一旦他们开始在地图上单击,新的多段线线段在地图上不可见,但会正确保存到数据库中

以下是我迄今为止所做的工作:

var map;
var polyline = null;
var polylinePath = null;

// HERE I INITIALIZE MY MAP ETC ETC ...
// IN EDIT MODE I ALLOW THE FOLLOWING FUNCTION TO BE CALLED FIRST TO LOAD ANY EXISITNG POLYLINES FOR THE USER
// THIS WORKS FINE, IT SHOWS THE PREVIOUS POLYLINE ON THE MAP.
function loadBasePolylines($mapGuid)
        {
            var loadUrl = 'classes/Ajax_System.php';
            $.getJSON(loadUrl+"?action=loadMapPolylines&mapId="+mapGuid, function(json) {
                if(json[0]['hasPolylines'] == 'yes'){

                    var polylinesArray = [];
                    var prepath = polylinePath;
                    if(prepath){
                        prepath.setMap(null);
                    }
                    var points = json[0].Points;
                    for (i=0; i<points.length; i++) {
                        polylinesArray.push(new google.maps.LatLng(points[i].lat,points[i].lon));
                        bounds.extend(new google.maps.LatLng(points[i].lat,points[i].lon));
                    }
                    polyline = new google.maps.Polyline({
                        strokeColor: json[0]['lineColour'],
                        strokeOpacity: 0.5,
                        strokeWeight: json[0]['lineThickness'],
                        clickable: false,
                        path: polylinesArray
                    });

                    polylinePath = polyline.getPath();
                    polyline.setMap(map);                        
                    map.fitBounds(bounds);
                }
            });
        }

// WHEN THE USER PRESS THE "DRAW PATH" BUTTON, THE FOLLOWING FUNCTION IN QUESTION IS CALLED:
function startPolyline()
        {
            if(polyline != null){
                var answer = confirm("This will clear the current polyline from the map. Are you sure you want to continue?");
                if(answer){
                    polyline.setMap(null);
                    if (tempMarkers) {
                        for (i in tempMarkers) {
                            tempMarkers[i].setMap(null);
                        }
                        tempMarkers.length = 0;
                    }
                } else {
                    return;
                }
            }
            var polyOptions = {
                strokeColor: polylineColor,
                strokeOpacity: polyLineOpacity,
                strokeWeight: polyLineWidth,
                clickable: false
            }
            polyline = new google.maps.Polyline(polyOptions);
            polyline.setMap(map);

            // Add a listener for the click event
            google.maps.event.addListener(map, 'click', addPolylinePoint);
        }

        function addPolylinePoint(event)
        {
            var path = polyline.getPath();
            path.push(event.latLng);
            var marker = new google.maps.Marker({
                position: event.latLng,
                title: '#' + path.getLength(),
                icon: '<?php echo URL; ?>public/mapIcons/mm_20_red.png',
                map: map
            });
            tempMarkers.push(marker);
        }
var映射;
var polyline=null;
var polylinePath=null;
//在这里我初始化我的地图等。。。
//在编辑模式下,我允许首先调用以下函数为用户加载任何现有的多段线
//这很好,它在地图上显示了上一条多段线。
函数loadBasePolylines($mapGuid)
{
var loadUrl='classes/Ajax_System.php';
$.getJSON(loadUrl+”?action=loadMapPolylines&mapId=“+mapGuid,函数(json){
如果(json[0]['hasPolylines']=='yes'){
var polylinesArray=[];
var prepath=多段线路径;
如果(预路径){
setMap(空);
}
var points=json[0]。点;

对于(i=0;i请尝试在startPolyline函数中重新初始化map变量

map = new google.maps.Map(document.getElementById('id of your map')):

哇,在再次阅读我的问题后,我已经解决了消失的多段线问题。希望这有一天能帮助其他人:

在从数据库加载多段线的代码中:

function loadBasePolylines($mapGuid)
    {
.
.
.

 polyline = new google.maps.Polyline({
                    strokeColor: json[0]['lineColour'],
                    strokeOpacity: 0.5,
                    strokeWeight: json[0]['lineThickness'],
                    clickable: false,
                    path: polylinesArray
                });

}
我将笔划不透明度设置为0.5(等于50%)右

但是,当我在中启动多段线工具时

function startPolyline()

var polyOptions = {
            strokeColor: polylineColor,
            strokeOpacity: polyLineOpacity,
            strokeWeight: polyLineWidth,
            clickable: false
        }
…我将不透明度设置为一个名为polyLineOpacity的未设置变量

一旦我添加了全局变量并将加载的值应用于

function loadBasePolylines($mapGuid)
    {
.
.
.
 strokeOpacity = json[0]['lineOpacity'] * 100;

 polyline = new google.maps.Polyline({
                    strokeColor: json[0]['lineColour'],
                    strokeOpacity: strokeOpacity,
                    strokeWeight: json[0]['lineThickness'],
                    clickable: false,
                    path: polylinesArray
                });

}
…不透明度正确的多段线再次正确显示

我称之为大脑冻结。
Tkx!

谢谢,但是,重新启动map变量会返回一个灰色的映射区域,并且不会侦听单击事件。再次设置映射选项也没有帮助。