关于 javascript:jQuery mobile 向现有地图添加新标记

jQuery mobile add new markers to an existing map

我在这里使用 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 点使用另一个标记更新地图,但屏幕变为空白。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<!doctype html>
<html lang="en">
   <head>
        jQuery mobile with Google maps - Google maps jQuery plugin
        <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 type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=places">
        <script type="text/javascript" src="js/jquery-1.7.1/jquery.min.js">
        <script type="text/javascript" src="js/jquery-mobile-1.0/jquery.mobile.min.js">
        <script type="text/javascript" src="js/jquery.ui-1.8.15/jquery.ui.autocomplete.min.js">
        <script type="text/javascript" src="js/demo.js">
        <script type="text/javascript" src="../ui/jquery.ui.map.js">
        <script type="text/javascript" src="../ui/jquery.ui.map.services.js">
        <script type="text/javascript" src="../ui/jquery.ui.map.extensions.js">
        <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');
            });
       
    </head>
    <body>

       
           
                jQuery mobile with Google maps v3 examples
                Back
           
               
               
                   
               
           
           
                Add Some More Markers
           
             
    </body>
</html>

请检查以下示例。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<!doctype html>
    <html lang="en">
       <head>
            jQuery mobile with Google maps - Google maps jQuery plugin
            <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 src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js">
            <script type="text/javascript" src="http://maps.google.com/maps/api/js?v=3&sensor=false&language=en">
            <script type="text/javascript" src="http://jquery-ui-map.googlecode.com/svn/trunk/ui/min/jquery.ui.map.min.js">
            <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 } );
                });
           
        </head>
        <body>
           
               
                    jQuery mobile with Google maps v3 examples
                    Back
               
                   
                   
                       
                   
                    Add Some More Markers
               
                 
        </body>
    </html>

初始地图:

enter