javascript - 我的 googlemap 地理位置无法正常工作

标签 javascript jquery google-maps jquery-mobile cordova

我正在尝试使用jQuery mobile和phonegap开发一个混合应用程序,我想实现一个支持地理位置的谷歌地图。为此我已经做了一些编码,但是在运行应用程序时它只是给了我一个ajax加载器,它是没有停止,任何人都可以帮我找到错误..我尝试了一些 jQuery 移动演示,但没有一个能正常工作。下面给出我的代码

<!doctype html>
<html lang="en">
   <head>
        <title> Google maps </title>
        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.0/jquery.mobile-1.4.0.min.css" />
       <style>
#content {
    padding: 0;
    position : absolute; 
    top : 0;  
    right : 0; 
    bottom : 0;  
    left : 0;     
}
</style>
        <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
        <script src="http://code.jquery.com/mobile/1.4.0/jquery.mobile-1.4.0.min.js"></script>
        <script type="text/javascript" src="http://maps.google.com/maps/api/js?v=3&sensor=true&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 mumbai = new google.maps.LatLng(19.075984,72.877656),
                mobileDemo = { 'center': '19.075984,72.877656', 'zoom': 15 },
                cityList = [
                    ['Bank ATM CST Road', 19.075984,72.877656, 1],
                    ['Bank ATM Air India Road', 19.078318,72.877024, 2],
               ['Bank ATM Lal Bahadur Sasthri Road', 19.069236,72.875278, 3]
                             ];

            function initialize()
            {
                $('#map_canvas').gmap({ 'center': mobileDemo.center, 'zoom': mobileDemo.zoom, 'disableDefaultUI':false });
             //addMarkers();
      getcurrentposition();
            }

            function addMarkers()
            {
                for (var i = 0; i < cityList.length; i++) 
                {
                    var $marker = $('#map_canvas').gmap('addMarker', {id: i, 'position': new google.maps.LatLng(cityList[i][1], cityList[i][2],cityList[i][3]),title: cityList[i][0]});
                    $marker.click(function() {
                        $('#map_canvas').gmap('openInfoWindow', {'content': cityList[this.id][0]}, this);
                    });
                }
            }

            $(document).on("pageinit", "#basic-map", function() {
                initialize();
            });

            /* $(document).on('click', '.add-markers', function(e) {
                e.preventDefault();
                addMarkers();
            }); */

            function getcurrentposition()
            {
                $('#map_canvas').gmap('getCurrentPosition', function(position, status) {
                    if ( status === 'OK' ) {
                        var clientPosition = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
                        $('#map_canvas').gmap('addMarker', {'position': clientPosition, 'bounds': true});
                        $('#map_canvas').gmap('addShape', 'Circle', { 
                            'strokeWeight': 0, 
                            'fillColor': "#008595", 
                            'fillOpacity': 0.25, 
                            'center': clientPosition, 
                            'radius': 15, 
                            'clickable': false 
                        });
                    }
                });

            }
        </script>
    </head>
    <body>
        <div id="basic-map" data-role="page">

            <div data-role="content">   
                <div class="ui-bar-c ui-corner-all ui-shadow" >
                    <div id="map_canvas" style="height:500px"></div>
                </div>

            </div>
        </div>      
    </body>
</html>

日志猫

04-04 04:53:07.952: D/CordovaLog(1665): Uncaught TypeError: Cannot call method 'apply' of undefined
04-04 04:53:07.952: I/chromium(1665): [INFO:CONSOLE(1)] "Uncaught TypeError: Cannot call method 'apply' of undefined", source: file:///android_asset/www/my_current_location.html (1)
04-04 04:53:08.182: D/Cordova(1665): onPageFinished(file:///android_asset/www/my_current_location.html)
04-04 04:53:08.182: D/Cordova(1665): Trying to fire onNativeReady
04-04 04:53:08.202: D/DroidGap(1665): onMessage(onNativeReady,null)
04-04 04:53:08.202: D/DroidGap(1665): onMessage(onPageFinished,file:///android_asset/www/my_current_location.html)

最佳答案

jquery.ui.map没有方法getCurrentPosition ,您必须自己实现。

参见http://code.google.com/p/jquery-ui-map/wiki/Examples#Example_get_user_position举个例子

<小时/>

<编辑>

链接的示例似乎是错误的,至少对于这个版本的 jquery.ui.map 来说是错误的

用途:

( function($) {

    $.extend($.ui.gmap.prototype, {

            /**
             * Gets the current position
             * @a: function(status, position)
             * @b:object, see https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIDOMGeoPositionOptions
             */
            getCurrentPosition: function(callback, geoPositionOptions) {
        if ( navigator.geolocation ) {
            navigator.geolocation.getCurrentPosition ( 
                function(result) {
                    callback(result, 'OK');
                }, 
                function(error) {
                    callback(null, error);
                }, 
                geoPositionOptions 
            );  
        } else {
            callback(null, 'NOT_SUPPORTED');
        }
    }

    });

  } (jQuery) );

但您也可以加载现有的 jquery.ui.map.extensions.js正如维德建议的

另外: 您还必须包括http://jquery-ui-map.googlecode.com/svn/trunk/ui/jquery.ui.map.overlays.js ,这将实现addShape -方法

演示:http://jsfiddle.net/doktormolle/rd4Xt/

关于javascript - 我的 googlemap 地理位置无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22858705/

相关文章:

javascript - 重新绘制谷歌地图以查看隐藏的移动标记

javascript - HTML5音频永久循环通过不同的来源

javascript - 仅删除父级的属性?

javascript - 是否可以控制获取哪些 Google map 脚本(JavaScript API)?

javascript - jQuery 单选按钮值验证

javascript - 使用谷歌地图在给定纬度的情况下将海里转换为经度

javascript - Javascript 是否对网站的打印版本有影响?

javascript - 在 Accordion 中打开外部菜单项时,无法将新的颜色类添加到第一个子菜单项

php - 如何使用 AJAX/jQuery 显示打印?

javascript - Google Maps API - 沿纬度/经度之间的路线获取点