草庐IT

Android 谷歌地图 v2 : on click listener not responding

coder 2023-11-25 原文

我试图在用户点击 map 时放置一个标记。我在 ActionBarActivity 中使用 SupportMapFragment。但是 map 没有响应,而且 map.setMapType() 操作不起作用。

这是我的代码:

private GoogleMap map;
private Marker marker;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    ActionBarActivity activity = (ActionBarActivity) getActivity();
    activity.getSupportActionBar().setTitle(R.string.select_location);
    super.onCreateView(inflater, container, savedInstanceState);
    return inflater.inflate(R.layout.map, container, false);
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    Log.d("Map","On view created");
    map = getMap();
            map.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
    map.setOnMapClickListener(new OnMapClickListener() {

        @Override
        public void onMapClick(LatLng point) {
            Log.d("Map","Map clicked");
            marker.remove();
            drawMarker(point);
        }
    });

         ...
         Location location = locationManager.getLastKnownLocation(provider);

        if(location!=null){
           //PLACE THE INITIAL MARKER              
           drawMarker(new LatLng(location.getLatitude(),location.getLongitude()));
        }
}

Logcat 正在显示“on view created”消息, map 显示带有标记的当前位置,因此正在执行代码的最后一部分。但是 onMapClickListener 被覆盖了,或者因为它不起作用,而且 map 不是卫星。

谁能帮帮我?

最佳答案

如果你扩展了 SupportMapFragment,你可以简单地这样做:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    ActionBarActivity activity = (ActionBarActivity) getActivity();
    activity.getSupportActionBar().setTitle(R.string.select_location);  
    return super.onCreateView(inflater, container, savedInstanceState);
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
  super.onActivityCreated(savedInstanceState);

  map = getMap();
  map.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
  map.setOnMapClickListener(new OnMapClickListener() {

    @Override
    public void onMapClick(LatLng point) {
        Log.d("Map","Map clicked");
        marker.remove();
        drawMarker(point);
    }
});

请注意,getMap() 在 onActivityCreated 中调用,如果您不使用 inflater.inflate(R.layout.map, container, false) 则不需要自定义布局。

您甚至不需要 map.xml 布局!

你正在扩展 SupportMapFragment 但你正在膨胀另一个 MapView (不是默认绑定(bind)到 SupportMapFragment 的那个),这就是为什么你没有查看 map 中的更改。因为您正在对从 getMap() 获取的默认 View 执行操作,但您正在查看另一个。查看docs about getMap() :

public final GoogleMap getMap ()

Gets the underlying GoogleMap that is tied to the view wrapped by this fragment.

希望对您有所帮助;)

关于Android 谷歌地图 v2 : on click listener not responding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18629769/

有关Android 谷歌地图 v2 : on click listener not responding的更多相关文章

  1. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  2. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  3. ruby-on-rails - 使用 gmaps4rails 动态加载谷歌地图标记 - 2

    如何只加载map边界内的标记gmaps4rails?当然,在平移和/或缩放后加载新的。与此直接相关的是,如何获取map的当前边界和缩放级别? 最佳答案 我是这样做的,我只在用户完成平移或缩放后替换标记,如果您需要不同的行为,请使用不同的事件监听器:在你看来(index.html.erb):{"zoom"=>15,"auto_adjust"=>false,"detect_location"=>true,"center_on_user"=>true}},false,true)%>在View的底部添加:functiongmaps4rail

  4. 最新版人脸识别小程序 图片识别 生成二维码签到 地图上选点进行位置签到 计算签到距离 课程会议活动打卡日常考勤 上课签到打卡考勤口令签到 - 2

    技术选型1,前端小程序原生MINA框架cssJavaScriptWxml2,管理后台云开发Cms内容管理系统web网页3,数据后台小程序云开发云函数云开发数据库(基于MongoDB)云存储4,人脸识别算法基于百度智能云实现人脸识别一,用户端效果图预览老规矩我们先来看效果图,如果效果图符合你的需求,就继续往下看,如果不符合你的需求,可以跳过。1-1,登录注册页可以看到登录页有注册入口,注册页如下我们的注册,需要管理员审核,审核通过后才可以正常登录使用小程序1-2,个人中心页登录成功以后,我们会进入个人中心页我们在个人中心页可以注册人脸,因为我们做人脸识别签到,需要先注册人脸才可以进行人脸比对,进

  5. SCIM v2 的 Ruby 实现 - 2

    SCIM是Google、Salesforce、PingIdentity等提出的用户配置的新标准。是否有现有的ruby​​实现来支持它?SimilarbutforJava 最佳答案 您可以获得一个面向Okta的开始fromhere或从头开始here但我认为您只能靠自己。耶!您有机会为Ruby社区贡献一个开源项目:) 关于SCIMv2的Ruby实现,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/ques

  6. ruby - 从谷歌开发者网站下载后,client_secret.json 为空 - 2

    我正在尝试从googleAPI下载client_secret.json。我正在执行https://developers.google.com/gmail/api/quickstart/ruby中列出的步骤.使用此向导在GoogleDevelopersConsole中创建或选择项目并自动启用API。在左侧边栏中,选择同意屏幕。选择电子邮件地址并输入产品名称(如果尚未设置),然后单击“保存”按钮。在左侧边栏中,选择凭据并点击创建新客户端ID。选择应用程序类型已安装应用程序,已安装应用程序类型为其他,然后单击“创建客户端ID”按钮。点击新客户端ID下的下载JSON按钮。将此文件移动到您的工作

  7. 用于下载私有(private)谷歌文档的 Ruby 脚本 - 2

    我想用Ruby编写脚本(使用gdatagem、rest-clientgem或直接使用Net::HTTP)使用gmail-userid/password对我的google文档进行身份验证,然后下载私有(private)列表文件和文件。GDatadocuments指南清楚地说明了如何获取公开可见的文档,但不清楚我如何在我的脚本中验证自己的身份以访问私有(private)文档。authenticationmethodstheyspecify所有这些似乎都需要人工干预,要么使用验证码,要么使用某种形式的OAuth/OpenID重定向。有什么方法可以只使用用户名/密码组合来访问我的私有(priv

  8. ruby - 获取谷歌搜索结果的正确方法是什么? - 2

    我想在google上获取特定关键字搜索的所有搜索结果。我已经看到了抓取的建议,但这似乎是个坏主意。我见过Gems(我计划使用ruby​​)进行抓取并使用API。我还看到了使用API的建议。有谁知道现在最好的方法吗?API不再受支持,我看到有人报告说他们取回了无法使用的数据。Gems是否有助于解决这个问题?提前致谢。 最佳答案 我也选择了抓取选项,它比向谷歌询问key和加号更快,而且您每天的搜索查询不限于100次。正如理查德指出的那样,谷歌的服务条款是一个问题。这是我做过的一个对我有用的例子——如果你想通过代理连接,它也很有用:req

  9. ruby-on-rails - Bluecloth v2.0.10 与 Windows 7 不工作 - 2

    使用Ruby187,我从http://rubyinstaller.org/downloads下载了devkit并按照https://github.com/oneclick/rubyinstaller/wiki/Development-Kit的说明进行操作.我还确保通过以下方式正确安装了devkit冒烟测试。然后我尝试安装bluecloth(v2.0.10)。它失败了以下错误:C:\test\typo>geminstallbluecloth--platform=rubyTemporarilyenhancingPATHtoincludeDevKit...Buildingnativeexte

  10. Android Studio开发之使用内容组件Content获取通讯信息讲解及实战(附源码 包括添加手机联系人和发短信) - 2

    运行有问题或需要源码请点赞关注收藏后评论区留言一、利用ContentResolver读写联系人在实际开发中,普通App很少会开放数据接口给其他应用访问。内容组件能够派上用场的情况往往是App想要访问系统应用的通讯数据,比如查看联系人,短信,通话记录等等,以及对这些通讯数据及逆行增删改查。首先要给AndroidMaifest.xml中添加响应的权限配置 下面是往手机通讯录添加联系人信息的例子效果如下分成三个步骤先查出联系人的基本信息,然后查询联系人号码,再查询联系人邮箱代码 ContactAddActivity类packagecom.example.chapter07;importandroid

随机推荐