将谷歌地图放在数据库的中心?

Posted

技术标签:

【中文标题】将谷歌地图放在数据库的中心?【英文标题】:Center Google Map on point from database? 【发布时间】:2010-05-11 13:08:09 【问题描述】:

我正在尝试将谷歌地图集中在从数据库中提取的单个标记上,到目前为止我所做的是使用此函数从数据库中获取单个标记

function getMarkers()
        var urlstr="readsingle.php?v=<?php echo $cam ?>";
        var request = GXmlHttp.create();
        request.open('GET', urlstr , true); // request XML from PHP with AJAX call
        request.onreadystatechange = function () 
            if (request.readyState == 4)  // 4 is a completed request
                var xmlDoc = request.responseXML;
                locations = xmlDoc.documentElement.getElementsByTagName("location");
                markers = [];
                if (locations.length)
                    for (var i = 0; i < locations.length; i++)  // cycle thru locations
                        markers[i] = new GMarker(new GLatLng(locations[i].getAttribute("lat"),locations[i].getAttribute("lng")));
                        markers[i].infowindow = "This is "+locations[i].getAttribute("name");
                        markers[i].markerindex = i;
                        markers[i].db_id = locations[i].getAttribute("location_id");
                        map.addOverlay(markers[i]);

                    
                
            
        

        request.send(null);

    

还有这个函数来加载地图

    function onLoad() 
      map = new GMap(document.getElementById("div_map"));
      map.addControl(new GSmallMapControl());
      map.addControl(new GMapTypeControl());
      map.setCenter(new GLatLng(53.76221, -2.71227), 8);
      map.enableScrollWheelZoom();
      getMarkers();
      GEvent.addListener(map, "click", function(overlay, point) 
          if (overlay) // marker clicked
              overlay.openInfoWindowhtml(overlay.infowindow);   // open InfoWindow
           else if (point)    // background clicked

          
      );
    

如何更改此行的 Lat Lng 值

map.setCenter(new GLatLng(53.76, -2.71), 5); 

匹配来自单个标记的 lat lng 值?还是有更简单的方法从数据库中提取单个标记并将地图居中放置?

【问题讨论】:

【参考方案1】:

如果getMarkers() 只检索一个标记,看起来您可以简单地添加:

map.setCenter(new GLatLng(locations[i].getAttribute("lat"), 
                          locations[i].getAttribute("lng")), 5);

在将标记添加到地图之后或之前:

map.addOverlay(markers[i]);

【讨论】:

干杯,没有意识到我可以在 getmarkers 函数中设置它

以上是关于将谷歌地图放在数据库的中心?的主要内容,如果未能解决你的问题,请参考以下文章

不能将谷歌地图 GMSMapView 放在主视图的子视图中?

将谷歌地图北转换为磁北

如何将谷歌地图位置添加到我的网站

如何将谷歌地图标记的纬度和经度发送到 Firebase - android? [关闭]

如何将谷歌地图添加到android

无法将谷歌静态地图加载到jquery mobile中的div中