使用地图片段活动
Posted
技术标签:
【中文标题】使用地图片段活动【英文标题】:Working with Map Fragment Activity 【发布时间】:2016-07-12 09:37:32 【问题描述】:我正在尝试使用谷歌地图片段创建一个基本活动。现在我有这个:
public class MainScreen extends AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_screen);
// add the map fragment to the activity
if (findViewById(R.id.fragment_container) != null)
if (savedInstanceState != null) return;
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, new FragmentGoogle()).commit();
public class FragmentGoogle extends android.support.v4.app.Fragment
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
return inflater.inflate(R.layout.map_google, container, false);
这是什么产生的:
我的问题是:如何与片段本身进行交互?假设我想放大 Sidney。我应该将代码放在 MainScreen.class 还是 Fragment.class 中?我应该使用哪些方法?这是我第一次使用片段。
【问题讨论】:
你也应该包含你的 .xml。此外,您可以从官方谷歌地图开始学习 android 教程和大量免费教程,如 android hive、vogella 或 codepath。这应该不是什么难题。 你不需要为fragment创建一个类,你可以直接从主活动类中创建。我建议你试试这个教程tutorialspoint.com/android/android_google_maps.htm 【参考方案1】:您无需创建自己的 FragmentGoogle。您可以使用 com.google.android.gms.maps.SupportMapFragment 并通过您的活动代码控制它。
在布局中:
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
android:id="@+id/map"
tools:context=".MapsActivity"
android:name="com.google.android.gms.maps.SupportMapFragment" />
然后在Activity代码中:
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
@Override
public void onMapReady(GoogleMap googleMap)
mMap = googleMap;
// Add a marker in Sydney, Australia, and move the camera.
LatLng sydney = new LatLng(-34, 151);
mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
代码取自 this tutorial足以启动和使用Google Maps Android API的大部分功能,只需按照步骤操作即可:)
【讨论】:
【参考方案2】:假设您在一个新项目中有一个空活动。 做这个 : creating premade android map activity
然后你会得到这样的东西: your project structure
转到谷歌地图 api 并按照他们在 (TODO) 中告诉你的操作
在谷歌地图平台上创建一个帐户和一个项目https://console.cloud.google.com/google/maps-apis/ 点击按钮激活安卓开发,您必须寻找它 然后去key部分创建新的api key 回到android studio,点击图中黄色的xml文件 把你的钥匙过去了 所以现在 Map 活动应该给你一个真实的地图,一切都应该工作,如果你进入地图活动,你应该看到地图 但现在您想要的是在 MainActivity 中添加该地图。(我将其命名为 ActivityMain 因为 MapActivity 和 MainActivity 看起来相同) 现在您需要做的就是复制 xml 文件 activity_maps.xml 的片段,除了 id 之外不更改任何内容。 这是 activity_main.xml : <?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/map1"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_
android:layout_
tools:context=".MapsActivity" />
我尝试在这里添加一个按钮,但我不能。所以我所做的是复制片段本身并将其放入 activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
android:orientation="vertical"
android:gravity="center"
tools:context=".ActivityMain">
<Button
android:id="@+id/button1"
android:layout_
android:layout_
android:text="Start" />
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_
android:layout_
tools:context=".MapsActivity" />
</LinearLayout>
我认为这些都是创建问题中图片的所有步骤。
我希望这对阅读有用而不是痛苦。
【讨论】:
以上是关于使用地图片段活动的主要内容,如果未能解决你的问题,请参考以下文章