Google maps api 3 找到google maps javascript代码中的致命缺陷吗?

Google maps api 3 找到google maps javascript代码中的致命缺陷吗?,google-maps-api-3,Google Maps Api 3,这段代码中的一些是借用的,因此我在理解这段代码时有点困难,因为我不熟悉将图像转换为地图中可拖动和可编码的对象的过程 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" /> <meta charset="utf-8"> <style type="t

这段代码中的一些是借用的,因此我在理解这段代码时有点困难,因为我不熟悉将图像转换为地图中可拖动和可编码的对象的过程

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

        <meta charset="utf-8">
            <style type="text/css">
                html { height: 100% }
                body { height: 100%; margin: 0; padding: 0 }
                #map { height: 100% }
                </style>


            <!-- iPad/iPhone specific css below, add after your main css >
             <link rel="stylesheet" media="only screen and (max-device-width: 1024px)" href="ipad.css" type="text/css" />       
             <link rel="stylesheet" media="only screen and (max-device-width: 480px)" href="iphone.css" type="text/css" />      
             -->
            <!-- If your application is targeting iOS BEFORE 4.0 you MUST put json2.js from http://www.JSON.org/json2.js into your www directory and include it here -->
            <script type="text/javascript" charset="utf-8" src="phonegap-1.4.1.js"></script>
            <script type="text/javascript">


                function onBodyLoad()
                {       
                    document.addEventListener("deviceready", onDeviceReady, false);
                }

                /* When this function is called, PhoneGap has been initialized and is ready to roll */
                /* If you are supporting your own protocol, the var invokeString will contain any arguments to the app launch.
                 see http://iosdevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html
                 for more details -jm */


            <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAHvl0q_ICxMdoioV8TAVeDhT3Rnec_7H_Z7LsYhQbN1_UW7UedxRVF7XTuKiZUL-yUwkvJri9Ou5rRQ" type="text/javascript"></script>
            <script>

                    <script>
                        function centerAndZoomOnBounds(bounds) {
                            var center = bounds.getCenter();
                            var newZoom = map.getBoundsZoomLevel(bounds);
                            if (map.getZoom() != newZoom) {
                                map.setCenter(center, newZoom);
                            } else {
                                map.panTo(center);
                            }
                        }

                        function createMarker(p) {
                            var m = new GMarker(p);
                            GEvent.addListener(m,"click",function(){this.openInfoWindow(p.toUrlValue())});
                            return m;
                        }

                        function addMarkerToMap() {
                            // find location of point
                            var markerPointx = this.left+10; // left+half the width;
                            var markerPointy = this.top+34 ;  // top + height;
                            var markerPoint = map.fromContainerPixelToLatLng(new GPoint(markerPointx,markerPointy));
                            // add marker
                            var m1 = createMarker(markerPoint);
                            map.addOverlay(m1);
                            // move draggable back to start
                            marker.moveTo(new GPoint(16,110));
                        }

                    </script>




            </head>


    <body onload="initialize()" onunload="GUnload()">

        <p><big><a href="InputCoordinates.html">Back</a></big></p>


        <div id="map" width=100% height=100%>
            <br><p style="padding-left:25px" id="message">You should be seeing a Google Map here.</p>

        </div>

        <img src="http://maps.gstatic.com/intl/en_ALL/mapfiles/marker.png" id="imgMarker">

            <script type="text/javascript">
                //<![CDATA[

                var mapdiv = document.getElementById("map");
                var map = new GMap2(mapdiv);

                map.addControl(new GSmallMapControl());
                map.addControl(new GScaleControl());
                map.addControl(new GMapTypeControl());
                map.setCenter(new GLatLng(52.019029,-0.770427), 6, G_NORMAL_MAP);

                marker = new GDraggableObject(document.getElementById("imgMarker"));
                marker.moveTo(new GPoint(16,110));
                GEvent.addListener(marker,"dragend",addMarkerToMap);

                //]]>
            </script>

        <!--Maps API Key
         AIzaSyD52tRfTY1FtEgXQpvu9-jN5AOz-2pxQg0
         -->
    </body>


</html>
这是phonegap网络应用程序的一部分。运行时,我会看到地图和标记图像,然后我可以将其四处拖动——但是,当我将其放下时,它不会固定在地图上,并变得可以单击以触发事件,就像我建模它的原始示例中那样。有人能发现任何令人愤怒的缺点吗

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

        <meta charset="utf-8">
            <style type="text/css">
                html { height: 100% }
                body { height: 100%; margin: 0; padding: 0 }
                #map { height: 100% }
                </style>


            <!-- iPad/iPhone specific css below, add after your main css >
             <link rel="stylesheet" media="only screen and (max-device-width: 1024px)" href="ipad.css" type="text/css" />       
             <link rel="stylesheet" media="only screen and (max-device-width: 480px)" href="iphone.css" type="text/css" />      
             -->
            <!-- If your application is targeting iOS BEFORE 4.0 you MUST put json2.js from http://www.JSON.org/json2.js into your www directory and include it here -->
            <script type="text/javascript" charset="utf-8" src="phonegap-1.4.1.js"></script>
            <script type="text/javascript">


                function onBodyLoad()
                {       
                    document.addEventListener("deviceready", onDeviceReady, false);
                }

                /* When this function is called, PhoneGap has been initialized and is ready to roll */
                /* If you are supporting your own protocol, the var invokeString will contain any arguments to the app launch.
                 see http://iosdevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html
                 for more details -jm */


            <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAHvl0q_ICxMdoioV8TAVeDhT3Rnec_7H_Z7LsYhQbN1_UW7UedxRVF7XTuKiZUL-yUwkvJri9Ou5rRQ" type="text/javascript"></script>
            <script>

                    <script>
                        function centerAndZoomOnBounds(bounds) {
                            var center = bounds.getCenter();
                            var newZoom = map.getBoundsZoomLevel(bounds);
                            if (map.getZoom() != newZoom) {
                                map.setCenter(center, newZoom);
                            } else {
                                map.panTo(center);
                            }
                        }

                        function createMarker(p) {
                            var m = new GMarker(p);
                            GEvent.addListener(m,"click",function(){this.openInfoWindow(p.toUrlValue())});
                            return m;
                        }

                        function addMarkerToMap() {
                            // find location of point
                            var markerPointx = this.left+10; // left+half the width;
                            var markerPointy = this.top+34 ;  // top + height;
                            var markerPoint = map.fromContainerPixelToLatLng(new GPoint(markerPointx,markerPointy));
                            // add marker
                            var m1 = createMarker(markerPoint);
                            map.addOverlay(m1);
                            // move draggable back to start
                            marker.moveTo(new GPoint(16,110));
                        }

                    </script>




            </head>


    <body onload="initialize()" onunload="GUnload()">

        <p><big><a href="InputCoordinates.html">Back</a></big></p>


        <div id="map" width=100% height=100%>
            <br><p style="padding-left:25px" id="message">You should be seeing a Google Map here.</p>

        </div>

        <img src="http://maps.gstatic.com/intl/en_ALL/mapfiles/marker.png" id="imgMarker">

            <script type="text/javascript">
                //<![CDATA[

                var mapdiv = document.getElementById("map");
                var map = new GMap2(mapdiv);

                map.addControl(new GSmallMapControl());
                map.addControl(new GScaleControl());
                map.addControl(new GMapTypeControl());
                map.setCenter(new GLatLng(52.019029,-0.770427), 6, G_NORMAL_MAP);

                marker = new GDraggableObject(document.getElementById("imgMarker"));
                marker.moveTo(new GPoint(16,110));
                GEvent.addListener(marker,"dragend",addMarkerToMap);

                //]]>
            </script>

        <!--Maps API Key
         AIzaSyD52tRfTY1FtEgXQpvu9-jN5AOz-2pxQg0
         -->
    </body>


</html>

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

        <meta charset="utf-8">
            <style type="text/css">
                html { height: 100% }
                body { height: 100%; margin: 0; padding: 0 }
                #map { height: 100% }
                </style>


            <!-- iPad/iPhone specific css below, add after your main css >
             <link rel="stylesheet" media="only screen and (max-device-width: 1024px)" href="ipad.css" type="text/css" />       
             <link rel="stylesheet" media="only screen and (max-device-width: 480px)" href="iphone.css" type="text/css" />      
             -->
            <!-- If your application is targeting iOS BEFORE 4.0 you MUST put json2.js from http://www.JSON.org/json2.js into your www directory and include it here -->
            <script type="text/javascript" charset="utf-8" src="phonegap-1.4.1.js"></script>
            <script type="text/javascript">


                function onBodyLoad()
                {       
                    document.addEventListener("deviceready", onDeviceReady, false);
                }

                /* When this function is called, PhoneGap has been initialized and is ready to roll */
                /* If you are supporting your own protocol, the var invokeString will contain any arguments to the app launch.
                 see http://iosdevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html
                 for more details -jm */


            <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAHvl0q_ICxMdoioV8TAVeDhT3Rnec_7H_Z7LsYhQbN1_UW7UedxRVF7XTuKiZUL-yUwkvJri9Ou5rRQ" type="text/javascript"></script>
            <script>

                    <script>
                        function centerAndZoomOnBounds(bounds) {
                            var center = bounds.getCenter();
                            var newZoom = map.getBoundsZoomLevel(bounds);
                            if (map.getZoom() != newZoom) {
                                map.setCenter(center, newZoom);
                            } else {
                                map.panTo(center);
                            }
                        }

                        function createMarker(p) {
                            var m = new GMarker(p);
                            GEvent.addListener(m,"click",function(){this.openInfoWindow(p.toUrlValue())});
                            return m;
                        }

                        function addMarkerToMap() {
                            // find location of point
                            var markerPointx = this.left+10; // left+half the width;
                            var markerPointy = this.top+34 ;  // top + height;
                            var markerPoint = map.fromContainerPixelToLatLng(new GPoint(markerPointx,markerPointy));
                            // add marker
                            var m1 = createMarker(markerPoint);
                            map.addOverlay(m1);
                            // move draggable back to start
                            marker.moveTo(new GPoint(16,110));
                        }

                    </script>




            </head>


    <body onload="initialize()" onunload="GUnload()">

        <p><big><a href="InputCoordinates.html">Back</a></big></p>


        <div id="map" width=100% height=100%>
            <br><p style="padding-left:25px" id="message">You should be seeing a Google Map here.</p>

        </div>

        <img src="http://maps.gstatic.com/intl/en_ALL/mapfiles/marker.png" id="imgMarker">

            <script type="text/javascript">
                //<![CDATA[

                var mapdiv = document.getElementById("map");
                var map = new GMap2(mapdiv);

                map.addControl(new GSmallMapControl());
                map.addControl(new GScaleControl());
                map.addControl(new GMapTypeControl());
                map.setCenter(new GLatLng(52.019029,-0.770427), 6, G_NORMAL_MAP);

                marker = new GDraggableObject(document.getElementById("imgMarker"));
                marker.moveTo(new GPoint(16,110));
                GEvent.addListener(marker,"dragend",addMarkerToMap);

                //]]>
            </script>

        <!--Maps API Key
         AIzaSyD52tRfTY1FtEgXQpvu9-jN5AOz-2pxQg0
         -->
    </body>


</html>

html{高度:100%}
正文{高度:100%;边距:0;填充:0}
#地图{高度:100%}
函数onBodyLoad()
{       
文件。添加的监听器(“deviceready”,OnDeviceraddy,false);
}
/*调用此函数时,PhoneGap已初始化并准备好滚动*/
/*如果您支持自己的协议,var invokeString将包含应用程序启动的任何参数。
看见http://iosdevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html
有关更多详细信息-jm*/
函数中心和ZoomonBounds(边界){
var center=bounds.getCenter();
var newZoom=map.getBoundsZoomLevel(边界);
if(map.getZoom()!=newZoom){
map.setCenter(center,newZoom);
}否则{
潘托地图(中);
}
}
函数createMarker(p){
var m=新的GMarker(p);
addListener(m,“click”,function(){this.openInfoWindow(p.toUrlValue())});
返回m;
}
函数addMarkerToMap(){
//查找点的位置
var markerPointx=this.left+10;//left+宽度的一半;
var markerpoint=this.top+34;//top+height;
var markerPoint=map.fromContainerPixelToLatLng(新的GPoint(markerPointx,markerPointy));
//添加标记
var m1=创建标记(标记点);
地图叠加图(m1);
//将可拖动设备移回起始位置
marker.moveTo(新GPoint(16110));
}

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

        <meta charset="utf-8">
            <style type="text/css">
                html { height: 100% }
                body { height: 100%; margin: 0; padding: 0 }
                #map { height: 100% }
                </style>


            <!-- iPad/iPhone specific css below, add after your main css >
             <link rel="stylesheet" media="only screen and (max-device-width: 1024px)" href="ipad.css" type="text/css" />       
             <link rel="stylesheet" media="only screen and (max-device-width: 480px)" href="iphone.css" type="text/css" />      
             -->
            <!-- If your application is targeting iOS BEFORE 4.0 you MUST put json2.js from http://www.JSON.org/json2.js into your www directory and include it here -->
            <script type="text/javascript" charset="utf-8" src="phonegap-1.4.1.js"></script>
            <script type="text/javascript">


                function onBodyLoad()
                {       
                    document.addEventListener("deviceready", onDeviceReady, false);
                }

                /* When this function is called, PhoneGap has been initialized and is ready to roll */
                /* If you are supporting your own protocol, the var invokeString will contain any arguments to the app launch.
                 see http://iosdevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html
                 for more details -jm */


            <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAHvl0q_ICxMdoioV8TAVeDhT3Rnec_7H_Z7LsYhQbN1_UW7UedxRVF7XTuKiZUL-yUwkvJri9Ou5rRQ" type="text/javascript"></script>
            <script>

                    <script>
                        function centerAndZoomOnBounds(bounds) {
                            var center = bounds.getCenter();
                            var newZoom = map.getBoundsZoomLevel(bounds);
                            if (map.getZoom() != newZoom) {
                                map.setCenter(center, newZoom);
                            } else {
                                map.panTo(center);
                            }
                        }

                        function createMarker(p) {
                            var m = new GMarker(p);
                            GEvent.addListener(m,"click",function(){this.openInfoWindow(p.toUrlValue())});
                            return m;
                        }

                        function addMarkerToMap() {
                            // find location of point
                            var markerPointx = this.left+10; // left+half the width;
                            var markerPointy = this.top+34 ;  // top + height;
                            var markerPoint = map.fromContainerPixelToLatLng(new GPoint(markerPointx,markerPointy));
                            // add marker
                            var m1 = createMarker(markerPoint);
                            map.addOverlay(m1);
                            // move draggable back to start
                            marker.moveTo(new GPoint(16,110));
                        }

                    </script>




            </head>


    <body onload="initialize()" onunload="GUnload()">

        <p><big><a href="InputCoordinates.html">Back</a></big></p>


        <div id="map" width=100% height=100%>
            <br><p style="padding-left:25px" id="message">You should be seeing a Google Map here.</p>

        </div>

        <img src="http://maps.gstatic.com/intl/en_ALL/mapfiles/marker.png" id="imgMarker">

            <script type="text/javascript">
                //<![CDATA[

                var mapdiv = document.getElementById("map");
                var map = new GMap2(mapdiv);

                map.addControl(new GSmallMapControl());
                map.addControl(new GScaleControl());
                map.addControl(new GMapTypeControl());
                map.setCenter(new GLatLng(52.019029,-0.770427), 6, G_NORMAL_MAP);

                marker = new GDraggableObject(document.getElementById("imgMarker"));
                marker.moveTo(new GPoint(16,110));
                GEvent.addListener(marker,"dragend",addMarkerToMap);

                //]]>
            </script>

        <!--Maps API Key
         AIzaSyD52tRfTY1FtEgXQpvu9-jN5AOz-2pxQg0
         -->
    </body>


</html>

您应该可以在这里看到谷歌地图

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

        <meta charset="utf-8">
            <style type="text/css">
                html { height: 100% }
                body { height: 100%; margin: 0; padding: 0 }
                #map { height: 100% }
                </style>


            <!-- iPad/iPhone specific css below, add after your main css >
             <link rel="stylesheet" media="only screen and (max-device-width: 1024px)" href="ipad.css" type="text/css" />       
             <link rel="stylesheet" media="only screen and (max-device-width: 480px)" href="iphone.css" type="text/css" />      
             -->
            <!-- If your application is targeting iOS BEFORE 4.0 you MUST put json2.js from http://www.JSON.org/json2.js into your www directory and include it here -->
            <script type="text/javascript" charset="utf-8" src="phonegap-1.4.1.js"></script>
            <script type="text/javascript">


                function onBodyLoad()
                {       
                    document.addEventListener("deviceready", onDeviceReady, false);
                }

                /* When this function is called, PhoneGap has been initialized and is ready to roll */
                /* If you are supporting your own protocol, the var invokeString will contain any arguments to the app launch.
                 see http://iosdevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html
                 for more details -jm */


            <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAHvl0q_ICxMdoioV8TAVeDhT3Rnec_7H_Z7LsYhQbN1_UW7UedxRVF7XTuKiZUL-yUwkvJri9Ou5rRQ" type="text/javascript"></script>
            <script>

                    <script>
                        function centerAndZoomOnBounds(bounds) {
                            var center = bounds.getCenter();
                            var newZoom = map.getBoundsZoomLevel(bounds);
                            if (map.getZoom() != newZoom) {
                                map.setCenter(center, newZoom);
                            } else {
                                map.panTo(center);
                            }
                        }

                        function createMarker(p) {
                            var m = new GMarker(p);
                            GEvent.addListener(m,"click",function(){this.openInfoWindow(p.toUrlValue())});
                            return m;
                        }

                        function addMarkerToMap() {
                            // find location of point
                            var markerPointx = this.left+10; // left+half the width;
                            var markerPointy = this.top+34 ;  // top + height;
                            var markerPoint = map.fromContainerPixelToLatLng(new GPoint(markerPointx,markerPointy));
                            // add marker
                            var m1 = createMarker(markerPoint);
                            map.addOverlay(m1);
                            // move draggable back to start
                            marker.moveTo(new GPoint(16,110));
                        }

                    </script>




            </head>


    <body onload="initialize()" onunload="GUnload()">

        <p><big><a href="InputCoordinates.html">Back</a></big></p>


        <div id="map" width=100% height=100%>
            <br><p style="padding-left:25px" id="message">You should be seeing a Google Map here.</p>

        </div>

        <img src="http://maps.gstatic.com/intl/en_ALL/mapfiles/marker.png" id="imgMarker">

            <script type="text/javascript">
                //<![CDATA[

                var mapdiv = document.getElementById("map");
                var map = new GMap2(mapdiv);

                map.addControl(new GSmallMapControl());
                map.addControl(new GScaleControl());
                map.addControl(new GMapTypeControl());
                map.setCenter(new GLatLng(52.019029,-0.770427), 6, G_NORMAL_MAP);

                marker = new GDraggableObject(document.getElementById("imgMarker"));
                marker.moveTo(new GPoint(16,110));
                GEvent.addListener(marker,"dragend",addMarkerToMap);

                //]]>
            </script>

        <!--Maps API Key
         AIzaSyD52tRfTY1FtEgXQpvu9-jN5AOz-2pxQg0
         -->
    </body>


</html>
//
第一个问题是主体上的onload方法指向一个不存在的函数:initialize()

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

        <meta charset="utf-8">
            <style type="text/css">
                html { height: 100% }
                body { height: 100%; margin: 0; padding: 0 }
                #map { height: 100% }
                </style>


            <!-- iPad/iPhone specific css below, add after your main css >
             <link rel="stylesheet" media="only screen and (max-device-width: 1024px)" href="ipad.css" type="text/css" />       
             <link rel="stylesheet" media="only screen and (max-device-width: 480px)" href="iphone.css" type="text/css" />      
             -->
            <!-- If your application is targeting iOS BEFORE 4.0 you MUST put json2.js from http://www.JSON.org/json2.js into your www directory and include it here -->
            <script type="text/javascript" charset="utf-8" src="phonegap-1.4.1.js"></script>
            <script type="text/javascript">


                function onBodyLoad()
                {       
                    document.addEventListener("deviceready", onDeviceReady, false);
                }

                /* When this function is called, PhoneGap has been initialized and is ready to roll */
                /* If you are supporting your own protocol, the var invokeString will contain any arguments to the app launch.
                 see http://iosdevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html
                 for more details -jm */


            <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAHvl0q_ICxMdoioV8TAVeDhT3Rnec_7H_Z7LsYhQbN1_UW7UedxRVF7XTuKiZUL-yUwkvJri9Ou5rRQ" type="text/javascript"></script>
            <script>

                    <script>
                        function centerAndZoomOnBounds(bounds) {
                            var center = bounds.getCenter();
                            var newZoom = map.getBoundsZoomLevel(bounds);
                            if (map.getZoom() != newZoom) {
                                map.setCenter(center, newZoom);
                            } else {
                                map.panTo(center);
                            }
                        }

                        function createMarker(p) {
                            var m = new GMarker(p);
                            GEvent.addListener(m,"click",function(){this.openInfoWindow(p.toUrlValue())});
                            return m;
                        }

                        function addMarkerToMap() {
                            // find location of point
                            var markerPointx = this.left+10; // left+half the width;
                            var markerPointy = this.top+34 ;  // top + height;
                            var markerPoint = map.fromContainerPixelToLatLng(new GPoint(markerPointx,markerPointy));
                            // add marker
                            var m1 = createMarker(markerPoint);
                            map.addOverlay(m1);
                            // move draggable back to start
                            marker.moveTo(new GPoint(16,110));
                        }

                    </script>




            </head>


    <body onload="initialize()" onunload="GUnload()">

        <p><big><a href="InputCoordinates.html">Back</a></big></p>


        <div id="map" width=100% height=100%>
            <br><p style="padding-left:25px" id="message">You should be seeing a Google Map here.</p>

        </div>

        <img src="http://maps.gstatic.com/intl/en_ALL/mapfiles/marker.png" id="imgMarker">

            <script type="text/javascript">
                //<![CDATA[

                var mapdiv = document.getElementById("map");
                var map = new GMap2(mapdiv);

                map.addControl(new GSmallMapControl());
                map.addControl(new GScaleControl());
                map.addControl(new GMapTypeControl());
                map.setCenter(new GLatLng(52.019029,-0.770427), 6, G_NORMAL_MAP);

                marker = new GDraggableObject(document.getElementById("imgMarker"));
                marker.moveTo(new GPoint(16,110));
                GEvent.addListener(marker,"dragend",addMarkerToMap);

                //]]>
            </script>

        <!--Maps API Key
         AIzaSyD52tRfTY1FtEgXQpvu9-jN5AOz-2pxQg0
         -->
    </body>


</html>
此外,映射初始化代码需要在激活body onload事件时调用的函数内完成,以便确保已创建必要的dom元素

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

        <meta charset="utf-8">
            <style type="text/css">
                html { height: 100% }
                body { height: 100%; margin: 0; padding: 0 }
                #map { height: 100% }
                </style>


            <!-- iPad/iPhone specific css below, add after your main css >
             <link rel="stylesheet" media="only screen and (max-device-width: 1024px)" href="ipad.css" type="text/css" />       
             <link rel="stylesheet" media="only screen and (max-device-width: 480px)" href="iphone.css" type="text/css" />      
             -->
            <!-- If your application is targeting iOS BEFORE 4.0 you MUST put json2.js from http://www.JSON.org/json2.js into your www directory and include it here -->
            <script type="text/javascript" charset="utf-8" src="phonegap-1.4.1.js"></script>
            <script type="text/javascript">


                function onBodyLoad()
                {       
                    document.addEventListener("deviceready", onDeviceReady, false);
                }

                /* When this function is called, PhoneGap has been initialized and is ready to roll */
                /* If you are supporting your own protocol, the var invokeString will contain any arguments to the app launch.
                 see http://iosdevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html
                 for more details -jm */


            <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAHvl0q_ICxMdoioV8TAVeDhT3Rnec_7H_Z7LsYhQbN1_UW7UedxRVF7XTuKiZUL-yUwkvJri9Ou5rRQ" type="text/javascript"></script>
            <script>

                    <script>
                        function centerAndZoomOnBounds(bounds) {
                            var center = bounds.getCenter();
                            var newZoom = map.getBoundsZoomLevel(bounds);
                            if (map.getZoom() != newZoom) {
                                map.setCenter(center, newZoom);
                            } else {
                                map.panTo(center);
                            }
                        }

                        function createMarker(p) {
                            var m = new GMarker(p);
                            GEvent.addListener(m,"click",function(){this.openInfoWindow(p.toUrlValue())});
                            return m;
                        }

                        function addMarkerToMap() {
                            // find location of point
                            var markerPointx = this.left+10; // left+half the width;
                            var markerPointy = this.top+34 ;  // top + height;
                            var markerPoint = map.fromContainerPixelToLatLng(new GPoint(markerPointx,markerPointy));
                            // add marker
                            var m1 = createMarker(markerPoint);
                            map.addOverlay(m1);
                            // move draggable back to start
                            marker.moveTo(new GPoint(16,110));
                        }

                    </script>




            </head>


    <body onload="initialize()" onunload="GUnload()">

        <p><big><a href="InputCoordinates.html">Back</a></big></p>


        <div id="map" width=100% height=100%>
            <br><p style="padding-left:25px" id="message">You should be seeing a Google Map here.</p>

        </div>

        <img src="http://maps.gstatic.com/intl/en_ALL/mapfiles/marker.png" id="imgMarker">

            <script type="text/javascript">
                //<![CDATA[

                var mapdiv = document.getElementById("map");
                var map = new GMap2(mapdiv);

                map.addControl(new GSmallMapControl());
                map.addControl(new GScaleControl());
                map.addControl(new GMapTypeControl());
                map.setCenter(new GLatLng(52.019029,-0.770427), 6, G_NORMAL_MAP);

                marker = new GDraggableObject(document.getElementById("imgMarker"));
                marker.moveTo(new GPoint(16,110));
                GEvent.addListener(marker,"dragend",addMarkerToMap);

                //]]>
            </script>

        <!--Maps API Key
         AIzaSyD52tRfTY1FtEgXQpvu9-jN5AOz-2pxQg0
         -->
    </body>


</html>
下面是一个基本示例,展示了可以运行的最简单的映射初始化

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

        <meta charset="utf-8">
            <style type="text/css">
                html { height: 100% }
                body { height: 100%; margin: 0; padding: 0 }
                #map { height: 100% }
                </style>


            <!-- iPad/iPhone specific css below, add after your main css >
             <link rel="stylesheet" media="only screen and (max-device-width: 1024px)" href="ipad.css" type="text/css" />       
             <link rel="stylesheet" media="only screen and (max-device-width: 480px)" href="iphone.css" type="text/css" />      
             -->
            <!-- If your application is targeting iOS BEFORE 4.0 you MUST put json2.js from http://www.JSON.org/json2.js into your www directory and include it here -->
            <script type="text/javascript" charset="utf-8" src="phonegap-1.4.1.js"></script>
            <script type="text/javascript">


                function onBodyLoad()
                {       
                    document.addEventListener("deviceready", onDeviceReady, false);
                }

                /* When this function is called, PhoneGap has been initialized and is ready to roll */
                /* If you are supporting your own protocol, the var invokeString will contain any arguments to the app launch.
                 see http://iosdevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html
                 for more details -jm */


            <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAHvl0q_ICxMdoioV8TAVeDhT3Rnec_7H_Z7LsYhQbN1_UW7UedxRVF7XTuKiZUL-yUwkvJri9Ou5rRQ" type="text/javascript"></script>
            <script>

                    <script>
                        function centerAndZoomOnBounds(bounds) {
                            var center = bounds.getCenter();
                            var newZoom = map.getBoundsZoomLevel(bounds);
                            if (map.getZoom() != newZoom) {
                                map.setCenter(center, newZoom);
                            } else {
                                map.panTo(center);
                            }
                        }

                        function createMarker(p) {
                            var m = new GMarker(p);
                            GEvent.addListener(m,"click",function(){this.openInfoWindow(p.toUrlValue())});
                            return m;
                        }

                        function addMarkerToMap() {
                            // find location of point
                            var markerPointx = this.left+10; // left+half the width;
                            var markerPointy = this.top+34 ;  // top + height;
                            var markerPoint = map.fromContainerPixelToLatLng(new GPoint(markerPointx,markerPointy));
                            // add marker
                            var m1 = createMarker(markerPoint);
                            map.addOverlay(m1);
                            // move draggable back to start
                            marker.moveTo(new GPoint(16,110));
                        }

                    </script>




            </head>


    <body onload="initialize()" onunload="GUnload()">

        <p><big><a href="InputCoordinates.html">Back</a></big></p>


        <div id="map" width=100% height=100%>
            <br><p style="padding-left:25px" id="message">You should be seeing a Google Map here.</p>

        </div>

        <img src="http://maps.gstatic.com/intl/en_ALL/mapfiles/marker.png" id="imgMarker">

            <script type="text/javascript">
                //<![CDATA[

                var mapdiv = document.getElementById("map");
                var map = new GMap2(mapdiv);

                map.addControl(new GSmallMapControl());
                map.addControl(new GScaleControl());
                map.addControl(new GMapTypeControl());
                map.setCenter(new GLatLng(52.019029,-0.770427), 6, G_NORMAL_MAP);

                marker = new GDraggableObject(document.getElementById("imgMarker"));
                marker.moveTo(new GPoint(16,110));
                GEvent.addListener(marker,"dragend",addMarkerToMap);

                //]]>
            </script>

        <!--Maps API Key
         AIzaSyD52tRfTY1FtEgXQpvu9-jN5AOz-2pxQg0
         -->
    </body>


</html>

此外,您发布的文档中未包含开头和标签,不确定这是否是“复制过去”错误或原始来源存在问题。是的,缺少的标签是复制/粘贴错误。然而,另一部分是有意的,但不被理解。在我自己编写的另一个maps页面中,我有一个初始化函数,整个功能运行良好。然而,在我部分复制的这个家伙的例子中,没有初始化,但它仍然可以工作。你能解释一下两者的区别吗?我必须看看另一个例子中的代码才能告诉你。不过,其中很大一部分是时机。只要DOM元素存在,脚本就可以访问它们,如果元素还不是DOM的一部分,那么通过脚本访问它们的尝试就会失败。这就是为什么jquery中的document reday函数如此流行的一个重要原因,它抽象了初始化过程中的所有超时。
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" />

        <meta charset="utf-8">
            <style type="text/css">
                html { height: 100% }
                body { height: 100%; margin: 0; padding: 0 }
                #map { height: 100% }
                </style>


            <!-- iPad/iPhone specific css below, add after your main css >
             <link rel="stylesheet" media="only screen and (max-device-width: 1024px)" href="ipad.css" type="text/css" />       
             <link rel="stylesheet" media="only screen and (max-device-width: 480px)" href="iphone.css" type="text/css" />      
             -->
            <!-- If your application is targeting iOS BEFORE 4.0 you MUST put json2.js from http://www.JSON.org/json2.js into your www directory and include it here -->
            <script type="text/javascript" charset="utf-8" src="phonegap-1.4.1.js"></script>
            <script type="text/javascript">


                function onBodyLoad()
                {       
                    document.addEventListener("deviceready", onDeviceReady, false);
                }

                /* When this function is called, PhoneGap has been initialized and is ready to roll */
                /* If you are supporting your own protocol, the var invokeString will contain any arguments to the app launch.
                 see http://iosdevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html
                 for more details -jm */


            <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAHvl0q_ICxMdoioV8TAVeDhT3Rnec_7H_Z7LsYhQbN1_UW7UedxRVF7XTuKiZUL-yUwkvJri9Ou5rRQ" type="text/javascript"></script>
            <script>

                    <script>
                        function centerAndZoomOnBounds(bounds) {
                            var center = bounds.getCenter();
                            var newZoom = map.getBoundsZoomLevel(bounds);
                            if (map.getZoom() != newZoom) {
                                map.setCenter(center, newZoom);
                            } else {
                                map.panTo(center);
                            }
                        }

                        function createMarker(p) {
                            var m = new GMarker(p);
                            GEvent.addListener(m,"click",function(){this.openInfoWindow(p.toUrlValue())});
                            return m;
                        }

                        function addMarkerToMap() {
                            // find location of point
                            var markerPointx = this.left+10; // left+half the width;
                            var markerPointy = this.top+34 ;  // top + height;
                            var markerPoint = map.fromContainerPixelToLatLng(new GPoint(markerPointx,markerPointy));
                            // add marker
                            var m1 = createMarker(markerPoint);
                            map.addOverlay(m1);
                            // move draggable back to start
                            marker.moveTo(new GPoint(16,110));
                        }

                    </script>




            </head>


    <body onload="initialize()" onunload="GUnload()">

        <p><big><a href="InputCoordinates.html">Back</a></big></p>


        <div id="map" width=100% height=100%>
            <br><p style="padding-left:25px" id="message">You should be seeing a Google Map here.</p>

        </div>

        <img src="http://maps.gstatic.com/intl/en_ALL/mapfiles/marker.png" id="imgMarker">

            <script type="text/javascript">
                //<![CDATA[

                var mapdiv = document.getElementById("map");
                var map = new GMap2(mapdiv);

                map.addControl(new GSmallMapControl());
                map.addControl(new GScaleControl());
                map.addControl(new GMapTypeControl());
                map.setCenter(new GLatLng(52.019029,-0.770427), 6, G_NORMAL_MAP);

                marker = new GDraggableObject(document.getElementById("imgMarker"));
                marker.moveTo(new GPoint(16,110));
                GEvent.addListener(marker,"dragend",addMarkerToMap);

                //]]>
            </script>

        <!--Maps API Key
         AIzaSyD52tRfTY1FtEgXQpvu9-jN5AOz-2pxQg0
         -->
    </body>


</html>