Php 将google地图坐标传输到mysql数据库

Php 将google地图坐标传输到mysql数据库,php,mysql,google-maps-api-3,markers,Php,Mysql,Google Maps Api 3,Markers,我有一个谷歌地图,用户可以在其中创建多段线。我已将多段线(lat、lng)坐标存储到数组中。现在我想使用php或javascript将这些坐标传输到mysql数据库,或者还有其他更好的选择吗?我应该如何进行 这是我的密码: (function() { window.onload = function() { var path; var marker; var infowindow; var places = []; //create refer

我有一个谷歌地图,用户可以在其中创建多段线。我已将多段线(lat、lng)坐标存储到数组中。现在我想使用php或javascript将这些坐标传输到mysql数据库,或者还有其他更好的选择吗?我应该如何进行

这是我的密码:

(function() {
    window.onload = function() {

    var path;
    var marker;
    var infowindow;
    var places = [];

    //create reference to div tag in HTML file
    var mapDiv = document.getElementById('map');

    // option properties of map
    var options = { 
            center: new google.maps.LatLng(-20.2796, 57.5074),
            zoom : 16,
            mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    // create map object
    var map = new google.maps.Map(mapDiv, options);

    // create MVC array to populate on click event
    var route = new google.maps.MVCArray();

    var polyline = new google.maps.Polyline({
        path: route,
        strokeColor: '#ff0000',
        strokeOpacity: 0.6,
        strokeWeight: 5
    });

    polyline.setMap(map);

    // create click event,attach to map and populate route array

    google.maps.event.addListener(map,'click', function(e) {

        // create reference to polyline object
         path = polyline.getPath();

         // add the position clicked on map to MVC array
        path.push(e.latLng);

    });

    // display coordinates
    document.getElementById('coords').onclick = function() {

        for(var i = 0; i < path.getLength(); i++) {

            alert('coords: ' + path.getAt(i).toUrlValue(2) +'\n');
        }


    }

    // create marker on right click
        google.maps.event.addListener(map,'rightclick', function(e) {

                marker = new google.maps.Marker({
                position: e.latLng,
                map: map
            });
                places.push(e.latLng);

                // get coordinates in infowindow on click

                google.maps.event.addListener(marker,'click', function(event){

                    if(!infowindow) {

                        infowindow = new google.maps.InfoWindow();

                    }
                    infowindow.setContent('coords: ' + marker.getPosition().toUrlValue(3));
                    infowindow.open(map,marker);
                });

            });

    };

})();
(函数(){
window.onload=函数(){
var路径;
var标记;
var信息窗口;
var位置=[];
//在HTML文件中创建对div标记的引用
var mapDiv=document.getElementById('map');
//地图的选项属性
变量选项={
中心:新google.maps.LatLng(-20.2796,57.5074),
缩放:16,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
//创建地图对象
var map=new google.maps.map(mapDiv,options);
//创建MVC阵列以填充单击事件
var route=new google.maps.MVCArray();
var polyline=新的google.maps.polyline({
路径:路线,
strokeColor:“#ff0000”,
笔划不透明度:0.6,
冲程重量:5
});
多段线.setMap(map);
//创建单击事件、附着到地图并填充管线阵列
google.maps.event.addListener(映射,'click',函数(e){
//创建对多段线对象的引用
路径=多段线。getPath();
//将地图上单击的位置添加到MVC阵列
推送路径(如板条);
});
//显示坐标
document.getElementById('coords')。onclick=function(){
对于(var i=0;i
您可以使用许多解决方案,例如,您的代码似乎是这样的:

var my_map= new GMap2(document.getElementById("my_map"));
    my_map.setCenter(new GLatLng(36.82,10.17),10);
    my_map.addControl(new GSmallMapControl());
    GEvent.addListener(my_map, "click", function(overlay,point){
    var lat = point.lat();
    var lng = point.lng();
    $('#input_lat').val(lat);
    $('#input_long').val(lng); 
 });

和input_lat,input_long可以隐藏或可见输入到表单中,然后保存到数据库中

您可以随时存储它-这取决于您以后想如何使用这些数据。 您可以将其存储为文本字段中的JSON编码数组,您可以将lat/lng坐标保存在单独的字段中,如下所示:

// Table for polylines
CREATE TABLE `polylines` (
  `pID` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  `pName` VARCHAR(45) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  PRIMARY KEY (`pID`)
)
ENGINE = MyISAM
CHARACTER SET utf8 COLLATE utf8_general_ci;

// Table for coordinates
CREATE TABLE `coords` (
  `cID` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  `cPolyline` INTEGER UNSIGNED NOT NULL,
  `cLat` VARCHAR(15) NOT NULL,
  `cLng` VARCHAR(15) NOT NULL,
  PRIMARY KEY (`cID`)
)
ENGINE = MyISAM
CHARACTER SET utf8 COLLATE utf8_general_ci;
现在您可以得到这样的多段线:

SELECT * FROM polylines WHERE pName = 'something'
然后坐标:

SELECT cLat, cLng FROM coords WHERE cPolyline = ID
SELECT * FROM coords WHERE cPath = ID

正如我之前所说,有很多可能性和选择,这取决于您下一步要做什么。

好了,现在,这里是为您提供的数据库解决方案:

表路径将存储阵列中的路径

CREATE TABLE `gmap`.`paths` (
  `pID` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  `pName` VARCHAR(75) NOT NULL,
  `pStartLat` VARCHAR(25) NOT NULL,
  `pStartLng` VARCHAR(25) NOT NULL,
  `pAverageSpeed` FLOAT NOT NULL,
  PRIMARY KEY (`pID`)
)
ENGINE = MyISAM;
表路径将在pName字段中存储您的用户名/路径名(无论您想要什么),在pStartLat/pStartLng字段中存储起始点,pAverageSpeed当然是平均速度(不知道您是否需要,以防万一),pID是您将用于另一个表的标识符:

CREATE TABLE `gmap`.`coords` (
  `cID` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  `cLat` VARCHAR(25) NOT NULL,
  `cLng` VARCHAR(25) NOT NULL,
  `cSpeed` FLOAT NOT NULL,
  `cPath` INTEGER UNSIGNED NOT NULL,
  PRIMARY KEY (`cID`)
)
ENGINE = MyISAM;
此表将允许您存储坐标-每个坐标都有速度

现在,假设您想显示名为“TestOne”的路径

// Connect to the database - I assume you can do that
// and retrieve data

SELECT * FROM paths WHERE pName = "TestOne"
现在您在表中得到了ID、名称、起点坐标和平均速度(mysql_fetch_assoc将非常适合)

然后,使用ID可以检索其余坐标:

SELECT cLat, cLng FROM coords WHERE cPolyline = ID
SELECT * FROM coords WHERE cPath = ID
现在,使用e。G循环时,可以将所有坐标检索到一个数组中


当然,首先必须使用INSERT INTO construction或类似工具来存储数据:-)

您可以序列化数组并将其存储到数据库中。为了节省时间,请对序列化字符串进行base64_编码。您可以尝试我是谷歌地图的新手。对不起,John。请详细说明。基本上,我必须将所有这些坐标保存到数据库中,并为它们指定一个速度。然后制作一个沿此路径移动的标记动画(多段线坐标),并将速度输出给用户@Lukasz Nowicki。我正在寻找教程来帮助我解决这个问题,但找不到适合我的情况的东西。你想为每个坐标或整个路径设置速度吗?也许你可以共享你提到的数组的一部分-这可能有助于解决你的问题。我可能有一部分多段线具有一定的速度,例如30 km/h,另一部分是大概是40公里/小时。当我启动动画时,应该通知用户速度的变化。我对如何继续这样做感到困惑。你能告诉我我需要做些什么来实现这一目标吗?谢谢卢卡斯·诺维斯基。这肯定会给我一些东西去做;)我会马上去做的,请便。任何问题-我会在这里:-)Thanhk你Lukasz你是一个救生员:)我肯定会有更多的问题:)