我以编程方式在 android 片段中创建了 mapview:以编程方式创建 MapView 并添加标记导致片段中出现空指针异常
但是,我在尝试加载时收到以下错误:
01-20 15:50:02.337 3542-3692/? E/DynamiteModule: Failed to load DynamiteLoader: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.dynamite.DynamiteModule$DynamiteLoaderClassLoader" on path: DexPathList[[zip file "/system/framework/com.google.android.maps.jar", zip file "/data/app/com.example.mypackage-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.mypackage-1/lib/arm, /system/fake-libs, /data/app/com.example.mypackage-1/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]]
Run Code Online (Sandbox Code Playgroud)
这是地图视图:
注意:它就这样永远卡住了。不确定是什么问题。另外,我正在使用 Eclipse 来构建我的项目(它没有更新为使用 Android Studio)。
我该如何解决?
我正在尝试使标记在本机反应中可点击。例如,对于一家特定的餐厅,我想显示标记,当用户点击它时,显示餐厅的名称(现在可以使用),当用户点击餐厅的名称时,它会直接进入他们的网站。只是为了它:
constructor(props){
super(props);
this.state = {
name: "",
email: "",
region: {
// luxembourg region
latitude: 49.6116,
longitude: 6.1319,
latitudeDelta: 0.0922,
longitudeDelta: 0.0421,
},
markers: [{
title: 'Royal Bengal',
coordinates: {
latitude: 49.606259,
longitude: 6.105683
}}
]};
}
Run Code Online (Sandbox Code Playgroud)
稍后显示地图:
<MapView
style={styles.map}
region={this.state.region}
showUserLocation = {true}
>
{this.state.markers.map((marker, index) => (
<MapView.Marker
key = {index}
coordinate = {marker.coordinates}
title = {marker.title}
// Icon =
// pinColor = {'#474744'}
/> )
)}
Run Code Online (Sandbox Code Playgroud)
假设我希望用户在点击 Royal Bengal 时转到 google.com,我应该怎么做?使用 onPress 和其他人查看文档并没有多大帮助。
我正在尝试运行Android MapView示例,并且在Eclipse中遇到了"无法从View转换为MapView"错误.
我的布局如下
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainlayout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<com.google.android.maps.MapView
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:apiKey="0jwi0saLYCPGfO-t7glg5bQoBz7jVKWCcgyQWQA"
/>
<LinearLayout
android:id="@+id/zoomview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/mapview"
android:layout_centerHorizontal="true"
/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
和活动代码是
package org.gaz.mapapp;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.ZoomControls;
import com.google.android.maps.*;
public class MapView extends MapActivity {
LinearLayout linearLayout;
MapView mapView;
ZoomControls mZoom;
public void onCreate(Bundle savedInstance) {
linearLayout = (LinearLayout) findViewById(R.id.mainlayout);
mapView = (MapView) findViewById(R.id.mapview);
mZoom = (ZoomControls) mapView.getZoomControls();
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method …Run Code Online (Sandbox Code Playgroud) 我有一个mapview,我想把一些标记放在上面.当我开始活动时,我将从web服务中检索这些,因此我需要知道当前视口的最小和最大lat/lng对.我在打电话
mMapView.getWidth()
mMapView.getHeight()
Run Code Online (Sandbox Code Playgroud)
但是在活动开始时他们都返回0.我尝试将它放在onAttachedToWindow,onResume,onPostCreate,onPostResume,onStart等等,但无济于事.我怎么知道活动已完成所有视图的布局并准备好给我正确的高度和宽度测量值?
我正在尝试使用"位置名称"(即"国家/地区名称")将MapView中的动画设置为某个位置.我得到了例外:

如果你看不到pic那么异常是:: IOException:服务不可用有错误无法获得连接工厂客户端.
我使用的代码如下:
public class ShowMapView extends MapActivity
{
MapView mapView;
MapController mapController;
String Country;
@Override
public void onCreate(Bundle bundleMap)
{
super.onCreate(bundleMap);
setContentView(R.layout.show_map);
mapView = (MapView)findViewById(R.id.MapView);
LinearLayout zoomLayout = (LinearLayout)findViewById(R.id.zoom);
View zoomView = mapView.getZoomControls();
zoomLayout.addView(zoomView,
new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
mapView.setBuiltInZoomControls(true);
Intent intent = this.getIntent();
Country = intent.getStringExtra("Country");
Geocoder geocoder = new Geocoder(this, Locale.getDefault());
Log.v("GEOCODER", geocoder.toString());
try
{
Log.v("MAP", "TRY BLOCK");
List<Address> address = geocoder.getFromLocationName(Country, 2);
Log.v("MAP", "Country: " + Country);
if(address.size() > 0)
{ …Run Code Online (Sandbox Code Playgroud) 只要我有一个调试密钥,我就可以看到地图(mapview).今天我在Goolge的网站上获得了一个发布密钥(在生成证书fingetprint之后).一旦我用我获得的新版本密钥替换调试密钥,就不再显示地图了.在看到地图之前,还有其他步骤吗?
谢谢.
我正在使用此方法在我的应用程序中在地图上的两个点之间绘制路线
private void DrawPath(GeoPoint src, GeoPoint dest, int color,
MapView mMapView01) {
// connect to map web service
StringBuilder urlString = new StringBuilder();
urlString.append("http://maps.google.com/maps?f=d&hl=en");
urlString.append("&saddr=");//from
urlString.append( Double.toString((double)src.getLatitudeE6()/1.0E6 ));
urlString.append(",");
urlString.append( Double.toString((double)src.getLongitudeE6()/1.0E6 ));
urlString.append("&daddr=");//to
urlString.append( Double.toString((double)dest.getLatitudeE6()/1.0E6 ));
urlString.append(",");
urlString.append( Double.toString((double)dest.getLongitudeE6()/1.0E6 ));
urlString.append("&ie=UTF8&0&om=0&output=kml");
Log.d("xxx","URL="+urlString.toString());
try
{
URL url = new URL(urlString.toString());
urlString = null;
HttpURLConnection urlConnection=(HttpURLConnection)url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
urlConnection.connect();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(urlConnection.getInputStream());
if(doc.getElementsByTagName("GeometryCollection").getLength()>0)
{
String path = doc.getElementsByTagName("GeometryCollection").item(0).getFirstChild().getFirstChild().getFirstChild().getNodeValue() ;
Log.d("xxx","path="+ path);
String …Run Code Online (Sandbox Code Playgroud) 
如上所示,我有一个片段活动,可以产生两个片段.在地图片段我想要实现并显示地图.
由于我们需要扩展MapActivity,我不确定如何在片段内完成.
尝试从 (/sf/answers/751744031/)实施解决方案
package com.m7.nomad;
import android.app.LocalActivityManager;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.actionbarsherlock.app.SherlockFragment;
import com.actionbarsherlock.view.Window;
public class MapsFragment extends SherlockFragment {
private static final String KEY_STATE_BUNDLE = "localActivityManagerState";
private LocalActivityManager mLocalActivityManager;
protected LocalActivityManager getLocalActivityManager() {
return mLocalActivityManager;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle state = null;
if (savedInstanceState != null) {
state = savedInstanceState.getBundle(KEY_STATE_BUNDLE);
}
mLocalActivityManager = new LocalActivityManager(getActivity(), true);
mLocalActivityManager.dispatchCreate(state);
}
@Override
public View onCreateView(LayoutInflater inflater, …Run Code Online (Sandbox Code Playgroud) 切换到地图api v2时还有一个问题.这是我想要实现的丑陋表现.
EDIT1.可以有几个标记,每个标记都有自己的标记.所有标记和标签同时显示.

如您所见,标记顶部有一些标签,其中包含一些信息.在使用api v1时,可以使用绘图标记和标签轻松完成Overlay.
如何使用api v2实现它?
第一个想法是将标记(红色)和标记(黑色)渲染到一个位图并将其设置为标记.但它会显着增加标记区域(红色矩形),并且这个 标记限制让我真正头痛,用户可以映射交互实现.
第二个想法是使用GroundOverlay,但乍一看,它不是为此目的而设计的.
Edit2 这里是类似的问题,解决方案,就像在第一个想法中一样,是使用标记和标签作为单个标记位图,从视图创建.
这必须是有史以来最荒谬的事情.
我有一个带有重复自定义项目的RecyclerView.在这些项目中,有一些文本字段,按钮和一个MapView.
问题是,当列表加载时,MapView仅显示Google徽标,而不显示其他图块或细节(或标记).但是,当我在地图上点击一次时,它会显示我添加的标记.在下一次点击时,它会加载像素化地图.在另一个点击,它加载更好的质量地图.进一步点击后,它会添加附近位置的文字标签.LatLngBounds也无法正常工作,但这是次要问题.
为什么会这样?
我的代码如下:
JobAdapter.java
public class JobAdapter extends RecyclerView.Adapter<JobAdapter.ViewHolder>
{
private Context context;
private static List<Job> jobList;
private HashSet<MapView> mapViews = new HashSet<>();
private GoogleMap googleMap;
public JobAdapter(Context con, List<Job> jobs)
{
context = con;
jobList = jobs;
}
@Override
public int getItemCount()
{
return jobList.size();
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
Context context = parent.getContext();
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.listitem_booking, parent, false);
ViewHolder viewHolder = new ViewHolder(view);
mapViews.add(viewHolder.mapView);
return …Run Code Online (Sandbox Code Playgroud) android-mapview ×10
android ×9
android-maps ×1
casting ×1
debugging ×1
google-maps ×1
java ×1
layout ×1
marker ×1
react-native ×1
release ×1