【问题标题】:Allow zooming Google-Maps with fingers - PhoneGap for Android允许用手指缩放谷歌地图 - PhoneGap for Android
【发布时间】:2013-01-16 06:36:30
【问题描述】:

我在PhoneGapAndroid 有一个应用程序,我使用Android 2.2 设备和Phone Gap 2.2.0 版本..

我想让用户通过手指来缩放地图

(在具有更高级版本的设备上它可以工作!)

为什么在这个版本上不起作用?

我需要定义一些东西来使它工作吗?

这是我的 HTML 格式的 Google 地图链接:

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

这些是文件 Manifest.xml 的权限:

<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>

【问题讨论】:

    标签: javascript android html google-maps cordova


    【解决方案1】:

    可能是硬件问题。许多(较旧的)android 设备不支持多点触控。如果您的设备不支持,则无法使用捏合缩放。

    查看android: how can I verify, that device support multitouch?

    【讨论】:

      【解决方案2】:

      您是否在视口中设置了user-scalable=yes

      【讨论】:

      • 尝试 map = new google.maps.Map({ zoom: true }); // 在初始化时 map.setOptions({ zoom: true }); // 或在运行时
      • stackoverflow.com/questions/6342705/… 阅读下面的 cmets,它们有帮助吗?
      • 不是我的问题,我只是缩放有问题
      • 这家伙说他没有放大 cmets,建议是这里有一些其他的事情要检查:清单文件是否允许定位? android.permission.ACCESS_FINE_LOCATION android.permission.ACCESS_COARSE_LOCATION 地图页面上有什么(空白屏幕、错误信息或?) 点击小地图后检查DDMS?通过在浏览器中加载 maps.google.com 并启用位置来验证 GPS 是否正常工作。在此处添加 alert() 以确认更改页面正在发生: $('#map_square').click( function() { $.mobile.changePage('#page-map', 'slide'); });
      • 清单文件是否允许定位?- 是的 地图页面上有什么(空白屏幕、错误消息或?) - 我的地图没有问题,点击小地图后检查 DDMS?- 我在设备而不是模拟器中使用,通过在浏览器中加载 maps.google.com 并启用位置来验证 GPS 是否正常工作 - 我不使用 GPS,我可以找到我的位置,$('#map_square').click(function() { $.mobile.changePage('#page-map', 'slide'); });- 这是为了什么?
      【解决方案3】:

      如果您设置属性 user-scalable=yes 不成功,您可以在 DroidGap 的 Activity 扩展中尝试此操作。

      super.appView.getSettings().setSupportZoom(true);
          super.appView.getSettings().setBuiltInZoomControls(true);
      

      【讨论】:

      • 它不会让我运行应用程序所以..我把它放在 super.loadUrl ("file://android_asset/www/XXX.html");
      • super.loadUrl("file://android_asset/www/XXX.html",2000);// super.appView.getSettings().setSupportZoom(true); super.appView.getSettings().setBuiltInZoomControls(true);在我的应用程序中,我只是使用这个
      • 有效!但它确实会放大所有不在地图上的应用程序!
      • 所以。设置您的视口 ' ' 并删除我的缩放代码。试试: var mapOptions = { zoom: 8, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
      • 在 main.xml 文件中添加一个新属性: map:uiZoomControls="true" map:uiZoomGestures="true" 或 map.getUiSettings().setZoomControlsEnabled(boolean enabled) ;map.getUiSettings() .setZoomGesturesEnabled(true);
      【解决方案4】:

      所以你的模拟器运行的是 Android 2.2 (Froyo) 对吗? 如果是这样,请首先检查您的环境中安装了哪些 API。听起来很简单,但您想检查您的包,以及是否可以在每次切换 API 级别时更新。 (例如 Fryo 是 API 级别 8)

      Fryo API Android 2.2 另外,您是否尝试过使用为 2.2 指定的对象手势来操纵您的意图。

      ScaleGestureDectectorClass

      希望对您有所帮助!

      【讨论】:

        猜你喜欢
        • 2018-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多