GoogleMap开发-Android

GoogleMap开发,做个小结,网上很少关于这个的资料,刚学习时,头疼了半天,贴出代码,供大家参考

1、布局文件main.xml:

<?xml
version="1.0"
encoding="utf-8"?>

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"
>

<fragment

android:id="@+id/map_layout_map"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_margin="0.5dip"

class="com.google.android.gms.maps.SupportMapFragment"
/>

</LinearLayout>

2、Acivity中

public class MapActivity
extends FragmentActivity {

private GoogleMap
map;

private SupportMapFragment
mapFragment;

@Override

protected
void onCreate(Bundle
savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

initControls();

initMap();

location(application.getLatitude(),
application.getLongitude());

displayAllLocation();

}

private void initControls() {

FragmentManager
manager = getSupportFragmentManager();

mapFragment = (SupportMapFragment)
manager

.findFragmentById(R.id.map_layout_map);

map =
mapFragment.getMap();

}

/**

* Initialize the map

*/

private
void initMap() {

try {

map.clear();

map.setMyLocationEnabled(true);

map.setIndoorEnabled(true);

map.setMapType(GoogleMap.MAP_TYPE_NORMAL);

// map.setTrafficEnabled(true);

map.setOnMapLongClickListener(onMapLongClickListener);

// mark视图标记点击事件

map.setOnMarkerClickListener(onMarkerClikcListener);

} catch (Exception
e) {

}

}

/**

* 定位

*

*

*/

public
void location(double
lat,
double lng) {

try {

LatLng latLng =
new LatLng(lat,
lng);

map.moveCamera(CameraUpdateFactory.newLatLng(latLng));

map.moveCamera(CameraUpdateFactory.zoomTo(10));

} catch (Exception
e) {

CommonHelper.log(this.getClass().getName(),

"searchLocation:" +
e.getMessage());

}

}

private void displayAllLocation() {

try {

map.clear();

LatLng at =
null;

if (entity.getLat() != 0.0 ||
entity.getLng() != 0.0) {

MarkerOptions options =
new MarkerOptions();

BitmapDescriptor
bitmapDescriptor = BitmapDescriptorFactory

.fromResource(R.drawable.ic_map_loaction);

options.icon(bitmapDescriptor);

LatLng latlng =
new LatLng(entity.getLat(),
entity.getLng());

options.position(latlng);

options.visible(true);

Marker marker=map.addMarker(options);

at =
latlng;

map.moveCamera(CameraUpdateFactory.newLatLng(at));

map.moveCamera(CameraUpdateFactory.zoomTo(10));

}

// map.clear();

} catch (Exception
e) {

CommonHelper.log(this.getClass().getName(),
"displayAllLocation:"

+ e.getMessage());

}

}

private OnMarkerClickListener
onMarkerClikcListener = new OnMarkerClickListener() {

@Override

public
boolean onMarkerClick(Marker arg0) {

MapInforWindow info =
new MapInforWindow(MapActivity.this);

map.setInfoWindowAdapter(info);

return
false;

}

};

}

3、MapInforWindow

public class MapWOInforWindow implements InfoWindowAdapter{

private Context context;

public MapWOInforWindow(Context context ) {

this.context = context;

}

@Override

public View getInfoContents(Marker arg0) {

return null;

}

@Override

public View getInfoWindow(Marker arg0) {

View view = LayoutInflater.from(context).inflate(

R.layout.map_wo_inforwindow_layout, null);

TextView tvTitle=(TextView)view.findViewById(R.id.map_wo_infowindow_layout_tv_title);

tvTitle.setText("Titlte");

return view;

}

}

4、如果希望进地图页面,直接弹出InforWindow,可以这样写

private void displayAllLocation() {

try {

map.clear();

LatLng at = null;

if (entity.getLat() != 0.0 || entity.getLng() != 0.0) {

MarkerOptions options = new MarkerOptions();

BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory

.fromResource(R.drawable.ic_map_loaction);

options.icon(bitmapDescriptor);

LatLng latlng = new LatLng(entity.getLat(), entity.getLng());

options.position(latlng);

options.visible(true);

Marker marker=map.addMarker(options);

at = latlng;

map.moveCamera(CameraUpdateFactory.newLatLng(at));

map.moveCamera(CameraUpdateFactory.zoomTo(10));

onMarkerClikcListener.onMarkerClick(marker);//加这句

}

// map.clear();

} catch (Exception e) {

CommonHelper.log(this.getClass().getName(), "displayAllLocation:"

+ e.getMessage());

}

}

private OnMarkerClickListener onMarkerClikcListener = new OnMarkerClickListener() {

@Override

public boolean onMarkerClick(Marker arg0) {

MapInforWindow info = new MapInforWindow(MapActivity.this);

map.setInfoWindowAdapter(info);

arg0.showInfoWindow();//加这句

return false;

}

};

时间: 2024-10-12 12:40:34

GoogleMap开发-Android的相关文章

哪位大兄弟有用 cMake 开发Android ndk的

一直用 Android studio 开发ndk,但是gradle支持的不是很好,只有experimental 版本支持 配置各种蛋疼.主要每次新建一个module都要修改配置半天.之前也看到过google 开发文档有提到 cmake 但是一直没用.哪位大兄弟用过,说下经验 哪位大兄弟有用 cMake 开发Android ndk的 >> android 这个答案描述的挺清楚的:http://www.goodpm.net/postreply/android/1010000007205830/哪位

即刻开始使用Kotlin开发Android的12个原因(KAD 30)

作者:Antonio Leiva 时间:Jul, 11, 2017 原文链接:https://antonioleiva.com/reasons-kotlin-android/ 这组文章已到最后了,它们是非常实用的.今天我想谈谈为什么我认为学习Kotlin是非常有趣的. 虽然, Kotlin现在已是官方支持的开发Android APP的编程语言,而你仍可能觉得没有足够的理由进行改变.在这些年以来,Java已经证明其能力,为什么要改变? 这是我认为转换到Kotlin不是一个冒险的赌注,而是你可以做的

用C/C++开发android应用

在某些情况下,比如原来与很多c/c++的代码, 可能希望采用c/c++编写android应用程序.在这种情况下,一般使用NDK.但是由于android直提供了java接口,因此不能够直接调用android中的各种对象或者部件. 如何直接使用c/c++开发android应用? 可以使用cle和wrapandroid项目作为中间件. CLE项目提供了多种语言的通用接口,其中就包含对c/c++的支持. 本文简单介绍了如何使用CLE和wrapandroid编写GUI应用程序.CLE可以作为多种语言的通用

使用Kotlin开发Android

查看我的全部开源项目[开源实验室] 欢迎加入我的QQ群:[201055521],本博客客户端源码下载[请点击] 摘要 我首先声明我并没有使用Kotlin很长时间,我几乎是在学习的同时写了这些文章的.我并没有尝试任何其它的替 代语言,例如Go和Scala,所以如果你是真的考虑换一种开发语言的话,我建议你去搜索一下其他人对这些 语言的评价. 本文原创,转载请注明地址:http://blog.kymjs.com/ 正文 最近,新了解了一门编程语言,叫做Kotlin.Kotlin是Jetbrains公司

用Kotlin开发android平台语音识别,语义理解应用(olamisdk)

用Kotlin开发android平台语音识别,语义理解应用(olamisdk) http://blog.csdn.net/ls0609/article/details/75084994

用Kotlin开发Android应用(I):介绍

关于Kotlin,网上已有一些介绍的文章,包括Antonio Leiva的这组blog翻译稿.不过,我还是想跟进它们.翻译它们,以锻炼自己的英文翻译.各位高手发现问题,请及时“拍砖”. 原文题目:Kotlin for Android (I): Introduction(http://antonioleiva.com/kotlin-for-android-introduction/) 原文作者:Antonio Leiva(http://antonioleiva.com/about/) 原文发布:2

visual studio 2015 开发android

转载请注明: http://www.cnblogs.com/sunyl/p/5493249.html http://www.cnblogs.com/sunyl/ 最近有不少新闻, 甲骨文向谷歌索赔93亿 谷歌有意在Android上放弃Java 外媒:谷歌考虑将苹果Swift作为安卓“一等”编程语言 让我觉得学习跨平台开发十分重要,似乎用C#开发Android是一个不错的选择. 本文内容概述: 通过官网安装所需IDE 修改hosts使得正常访问谷歌 解决,Android SDK Manager下载

Android基础入门教程——1.2.1 使用Eclipse + ADT + SDK开发Android APP

Android基础入门教程--1.2.1 使用Eclipse + ADT + SDK开发Android APP 标签(空格分隔): Android基础入门教程 1.前言 这里我们有两条路可以选,直接使用封装好的用于开发Android的ADT Bundle,或者自己进行配置 因为谷歌已经放弃了ADT的更新,官网上也取消的下载链接,这里提供谷歌放弃更新前最新版本的 ADT Bundle供大家下载! 2.直接使用打包好的Eclipse 32位版:adt-bundle-windows-x86-20140

PhoneGap与Jquery Mobile组合开发android应用的配置

PhoneGap与Jquery Mobile结合开发android应用的配置 由于工作需要,用到phonegap与jquery moblie搭配,开发android应用程序. 这些技术自己之前也都没接触过,可以说是压根没听说过,真是感慨,在开发领域,技术日新月异,知识真是永远学不完的.就算是做java开发的,可是细分下来,专业方向还是很多的:自己没有涉及的技术还是太多了,自个需要对单个领域专业点,知识丰富点.做不了全才,那咱做个专才,在如今社会还是必须的. 好了,咱们言归正传: PhoneGap