【问题标题】:problem on markers in google maps谷歌地图中的标记问题
【发布时间】:2011-03-01 09:33:12
【问题描述】:

iam pradeep 我在谷歌地图上有问题 问题是我根据我从数据库中获得的纬度和经度(纬度和经度)创建多个标记。

问题来了。 当我创建标记时,只有最后一个标记被加载到地图上,而不是加载所有地图。

你可以在下面看到代码。

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.sql.*" %>
<%!
        Connection connection = null;
        boolean foundResults = false;
        ResultSet set = null;
        Statement statement = null;
%>

<!DOCTYPE html>  

<html>  

<head>  

<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />  

<style type="text/css">    html { height: 100% }    body { height: 100%; margin: 0px; padding: 0px }    #map_canvas { height: 100% }  </style>  

<script type="text/javascript"      src="http://maps.google.com/maps/api/js?sensor=true">  </script>  

<script type="text/javascript"> 

var locations;
var h = new Array(10);


function initialize() 
{      
    var latlng = new google.maps.LatLng(17.4531555176, 78.4580039978);

    var myOptions = { zoom: 4,   center: latlng,    mapTypeId: google.maps.MapTypeId.ROADMAP };

    var map = new google.maps.Map(document.getElementById("map_canvas"),  myOptions);

    //google.maps.event.addListener(map, 'zoom_changed', function() { setTimeout(moveToDsnr, 500);});
    google.maps.event.addListener(map, 'zoom_changed', function() { setTimeout(moveToAmpp, 500);});

    var marker = new google.maps.Marker({position: latlng,map: map,title:"Hyderabad"});

    google.maps.event.addListener(marker, 'click', function() { map.setZoom(12);});

}

function moveToAmpp()
{
    <%  
        String lat=null; 
        String lng=null;

        int i=0;
        try 
        {
                Class c = Class.forName("org.postgresql.Driver");

                connection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/postgres","postgres", "password");

                statement = connection.createStatement();               
                set = statement.executeQuery("SELECT lat, lng FROM latlng");
                while(set.next())
                //for(i=0;set.next();i++)
                {
                    lat=set.getString(1);
                    lng=set.getString(2);

    %>
                    alert(<%= lat%>);
                    alert(<%= lng%>);

                    locations = [['Dilsukhnagar',  <%= lat%>, <%= lng%>, 1]];

                    alert(locations);
                    var map = new google.maps.Map(document.getElementById("map_canvas"),{zoom: 12,center: new       google.maps.LatLng(17.38,78.48),mapTypeId:google.maps.MapTypeId.ROADMAP});
                    var infowindow = new google.maps.InfoWindow();
                    var marker;
                    var i;
                    //alert(locations.length);
                    alert(locations[0][0]);
                    alert(locations[0][1]);
                    alert(locations[0][2]);
                    alert(locations[0][3]);

                    for (i = 0; i < locations.length; i++)
                    {
                        marker = new google.maps.Marker({position: new google.maps.LatLng(locations[i][1],locations[i][2]),map: map});
                        alert("done");
                        google.maps.event.addListener(marker, 'click', (
                            function(marker, i)
                            {
                                return function()
                                        {
                                            infowindow.setContent(locations[i][0]);
                                            infowindow.open(map, marker);
                                        }
                            })
                            (marker, i));
                            alert("created");
                    }


                alert("hello");
    <%
                }
        }
        catch(Exception e)
        {   
        }
    %>
}   

</script>  
</head>  

<body onload="initialize()">    
<div id="map_canvas" style="width:100%; height:100%"></div>
</body>  

</html>

所以请帮助我。 谢谢。

【问题讨论】:

    标签: google-maps


    【解决方案1】:

    设置locations = [['Dilsukhnagar', lat, lng, 1]];时有问题 这会重置所有位置表,只留下一条记录。

    检查此更正:(我删除了 JSP,因为我没有服务器) 您将不得不重新考虑 JSP 循环以使其与您的数据库一起使用。 您必须启动缩放才能调用初始化函数。我认为您可能想要更改此设置,因为它会导致奇怪的行为。

    <!DOCTYPE html>  
    <html>  
        <head>  
            <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />  
            <style type="text/css">    html { height: 100% }    body { height: 100%; margin: 0px; padding: 0px }    #map_canvas { height: 100% }  </style>  
            <script type="text/javascript"      src="http://maps.google.com/maps/api/js?sensor=true">  </script>  
    
            <script type="text/javascript"> 
    
                var locations;
                var h = new Array(10);
    
    
                function initialize() 
                {      
                    var latlng = new google.maps.LatLng(17.4531555176, 78.4580039978);
    
                    var myOptions = { zoom: 4,   center: latlng,    mapTypeId: google.maps.MapTypeId.ROADMAP };
    
                    var map = new google.maps.Map(document.getElementById("map_canvas"),  myOptions);
    
                    google.maps.event.addListener(map, 'zoom_changed', function() { setTimeout(moveToAmpp, 500);});
    
                    var marker = new google.maps.Marker({position: latlng,map: map,title:"Hyderabad"});
    
                    google.maps.event.addListener(marker, 'click', function() { map.setZoom(12);});
    
                }
    
                function moveToAmpp()
                {
                    var locations = new Array(2);
                    for(i = 0; i < locations.length; i++) {
                        locations[i] = new Array(4);
                    }
    
                    <%  
                        String lat=null; 
                        String lng=null;
    
                        int i=0;
                        try 
                        {
                            Class c = Class.forName("org.postgresql.Driver");
    
                            connection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/postgres","postgres", "password");
    
                            statement = connection.createStatement();               
                            set = statement.executeQuery("SELECT lat, lng FROM latlng");
                            while(set.next())
                            {
                    %>
    
                                /* Can be embedded into JSP loop */
                                locations[<%= i %>][0]="SomeThing You get from your DB?";
                                locations[<%= i %>][1]=<%= lat%>;
                                locations[<%= i %>][2]=<%= lng%>;
                                locations[<%= i %>][3]="Something you get from your DB?";
    
                    <%          i++; 
                            }
                    %>
    
                    var map = new google.maps.Map(document.getElementById("map_canvas"),{zoom: 12,center: new       google.maps.LatLng(17.38,78.48),mapTypeId:google.maps.MapTypeId.ROADMAP});
                    var infowindow = new google.maps.InfoWindow();
                    var marker;
                    var i;
    
                    for (i = 0; i < locations.length; i++)
                    {
                        marker = new google.maps.Marker({position: new google.maps.LatLng(locations[i][1],locations[i][2]),map: map});
                        //alert("done");
                        google.maps.event.addListener(marker, 'click', (
                            function(marker, i)
                            {
                                return function()
                                        {
                                            infowindow.setContent(locations[i][0]);
                                            infowindow.open(map, marker);
                                        }
                            })
                            (marker, i));
                    }
        }   
    
        </script>  
    </head>  
    
    <body onload="initialize()">    
        <div id="map_canvas" style="width:100%; height:100%"></div>
    </body>  
    
    </html>
    

    它对你有用吗?

    【讨论】:

    • @M'vy :非常感谢,但你能告诉我如何嵌入 JSp 循环,因为我尝试过但没有成功。所以请帮助 M'vy。
    • 我认为你对这部分没意见。您可以执行循环并使用 JSP 变量来完成 locations 结构。我猜是这样的:locations[&lt;%= i %&gt;[1] = &lt;%= lat %&gt;,就像您在示例中所做的那样。顺便说一句,您需要创建 i 变量以将其用作循环中的计数器,并为每次传递递增。你看到了吗? (或者我可以尝试在那里添加一些代码,但我猜在 30-40 分钟内)
    • 我刚刚根据您的第一个输入编辑了代码。我不确定 JSP 部分,但我对 JSP 的记忆看起来不错。我只是无法测试它。
    • 是的我正在尝试但无法做到这一点。你能告诉我如何标记为已解决
    猜你喜欢
    • 2011-04-04
    • 1970-01-01
    • 2012-08-07
    • 2021-12-23
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-10
    相关资源
    最近更新 更多