【问题标题】:jQuery mobile add new markers to an existing mapjQuery mobile 向现有地图添加新标记
【发布时间】:2012-08-17 16:23:22
【问题描述】:

我在这里使用 jQuery 移动谷歌地图示例,重点关注第一个“基本地图示例”。

http://jquery-ui-map.googlecode.com/svn/trunk/demos/jquery-google-maps-mobile.html

我希望能够向basic_map 动态添加标记,但我遇到了一些麻烦。我是 jQuery 移动和 JavaScript 的新手。

这是我编辑后的 ​​jQuery 移动 UI 网站上的基本地图示例。如果你将它保存在 jQuery mobile demos 文件夹中,那么一切都应该正确呈现。我在地图页面底部添加了一个按钮以及addMarkers 功能。当您加载页面时,地图会以mobileDemo 坐标(-41, 87) 为中心显示,该坐标靠近芝加哥,但并不完全在那里。当您单击按钮时,我想在 chicago 点使用另一个标记更新地图,但屏幕变为空白。

这只是我真正想做的一个模拟示例。在我更长、更复杂的程序中,我正在查询数据库以查找与查询匹配的地址,然后我想将这些标记动态地放在地图上。我需要对此源代码进行哪些更改才能绘制芝加哥点(或其他即时标记)?

<!doctype html>
<html lang="en">
   <head>
        <title>jQuery mobile with Google maps - Google maps jQuery plugin</title>
        <link type="text/css" rel="stylesheet" href="css/jquery-mobile-1.0/jquery.mobile.css" />
        <link type="text/css" rel="stylesheet" href="css/mobile.css" />
        <script type="text/javascript" src="js/modernizr-2.0.6/modernizr.min.js"></script>
        <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=places"></script> 
        <script type="text/javascript" src="js/jquery-1.7.1/jquery.min.js"></script>
        <script type="text/javascript" src="js/jquery-mobile-1.0/jquery.mobile.min.js"></script>
        <script type="text/javascript" src="js/jquery.ui-1.8.15/jquery.ui.autocomplete.min.js"></script>
        <script type="text/javascript" src="js/demo.js"></script>
        <script type="text/javascript" src="../ui/jquery.ui.map.js"></script>
        <script type="text/javascript" src="../ui/jquery.ui.map.services.js"></script>
        <script type="text/javascript" src="../ui/jquery.ui.map.extensions.js"></script>
        <script type="text/javascript">

            var mobileDemo = { 'center': '41,-87', 'zoom': 7 };
            var chicago = new google.maps.LatLng(41.850033,-87.6500523);
            var map 
            function addMarkers(){
                map = new google.maps.Map(document.getElementById('map_canvas'));
                var marker = new google.maps.Marker({
                    map: map,
                    position: chicago
                });
            }

            $('#basic_map').live('pageinit', function() {
                demo.add('basic_map', function() {
                    $('#map_canvas').gmap({'center': mobileDemo.center, 'zoom': mobileDemo.zoom, 'disableDefaultUI':true, 'callback': function() {
                        var self = this;
                        self.addMarker({'position': this.get('map').getCenter() }).click(function() {
                            self.openInfoWindow({ 'content': 'Hello World!' }, this);
                        });
                    }}); 
                }).load('basic_map');
            });

            $('#basic_map').live('pageshow', function() {
                demo.add('basic_map', function() { $('#map_canvas').gmap('refresh'); }).load('basic_map');
            });
        </script>
    </head>
    <body>

        <div id="basic_map" data-role="page">
            <div data-role="header">
                <h1><a data-ajax="false" href="/">jQuery mobile with Google maps v3</a> examples</h1>
                <a data-rel="back">Back</a>
            </div>
            <div data-role="content">   
                <div class="ui-bar-c ui-corner-all ui-shadow" style="padding:1em;">
                    <div id="map_canvas" style="height:350px;"></div>
                </div>
            </div>
            <div data-role="content">
                <a href="#" data-role="button" data-theme="b" onclick="addMarkers()">Add Some More Markers</a>
            </div>
        </div>      
    </body>
</html>

【问题讨论】:

    标签: javascript jquery-ui jquery-mobile google-maps-api-3


    【解决方案1】:

    请检查以下示例。

    在第一个地图加载中没有任何标记。当您单击按钮时,会动态添加标记,无需刷新页面或地图。

    <!doctype html>
        <html lang="en">
           <head>
                <title>jQuery mobile with Google maps - Google maps jQuery plugin</title>
                <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
                <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
                <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
                <script type="text/javascript" src="http://maps.google.com/maps/api/js?v=3&sensor=false&language=en"> </script>
                <script type="text/javascript" src="http://jquery-ui-map.googlecode.com/svn/trunk/ui/min/jquery.ui.map.min.js"></script>
                <script type="text/javascript">
    
                    var chicago = new google.maps.LatLng(41.850033,-87.6500523),
                    mobileDemo = { 'center': '41,-87', 'zoom': 7 };
    
                    function initialize() {
                        $('#map_canvas').gmap({ 'center': mobileDemo.center, 'zoom': mobileDemo.zoom, 'disableDefaultUI':false });
                    }
    
                    $(document).on("pageinit", "#basic-map", function() {
                        initialize();
                    });
    
                    $(document).on('click', '.add-markers', function(e) {
                            e.preventDefault();
                            $('#map_canvas').gmap('addMarker', { 'position': chicago } );
                    });
                </script>
            </head>
            <body>
                <div id="basic-map" data-role="page">
                    <div data-role="header">
                        <h1><a data-ajax="false" href="/">jQuery mobile with Google maps v3</a> examples</h1>
                        <a data-rel="back">Back</a>
                    </div>
                    <div data-role="content">   
                        <div class="ui-bar-c ui-corner-all ui-shadow" style="padding:1em;">
                            <div id="map_canvas" style="height:350px;"></div>
                        </div>
                        <a href="#" class="add-markers" data-role="button" data-theme="b">Add Some More Markers</a>
                    </div>
                </div>      
            </body>
        </html>
    

    初始地图:

    按钮点击后的地图:

    【讨论】:

    • 完美!非常感谢!我有一个非常简单的后续问题。如果我还想在单击地图上的标记时显示一个显示“hello world”的信息窗口,我该怎么做?我查看了文档,有点困惑,因为我找不到任何具有 $('#map_canvas').gmap('addMarker', { 'position': chicago } ); 语法和信息窗口的示例。再次感谢。
    • 我在此处发布了后续问题,因此您可以通过回答获得更多声誉:stackoverflow.com/questions/12083564/…
    • 谢谢艾琳。我已经回答了这个问题:)
    • 对不起,我没有看到你的第一条评论。我很高兴能帮上忙:)
    猜你喜欢
    • 2019-05-22
    • 2012-08-18
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    • 2011-10-23
    相关资源
    最近更新 更多