我正在尝试在Google Maps Android API v2中使用自定义图标获取标记.我刚刚更改了Google提供的一个示例.我.icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow))在方法中添加了RawMapViewDemoActivitysetUpMap().
private void setUpMapIfNeeded() {
if (mMap == null) {
mMap = ((MapView) findViewById(R.id.map)).getMap();
if (mMap != null) {
setUpMap();
}
}
}
private void setUpMap() {
mMap.addMarker(new MarkerOptions()
.position(new LatLng(0, 0))
.title("Marker")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow)));
}
Run Code Online (Sandbox Code Playgroud)
但我总是得到"IBitmapDescriptorFactory未初始化".
12-18 15:40:54.356: E/AndroidRuntime(12591): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mapdemo/com.example.mapdemo.RawMapViewDemoActivity}: java.lang.NullPointerException: IBitmapDescriptorFactory is not initialized
12-18 15:40:54.356: E/AndroidRuntime(12591): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
12-18 15:40:54.356: E/AndroidRuntime(12591): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
12-18 15:40:54.356: E/AndroidRuntime(12591): at android.app.ActivityThread.access$600(ActivityThread.java:130)
12-18 15:40:54.356: E/AndroidRuntime(12591): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
12-18 15:40:54.356: E/AndroidRuntime(12591): …Run Code Online (Sandbox Code Playgroud) 对于这方面的答案,我看起来很高很低,没有人,在任何论坛问题上都能提供帮助.我搜索过这些教程.该API指南说:
仅当启用"我的位置"图层时,"我的位置"按钮才会显示在屏幕的右上角.
所以我一直在寻找这个我的位置图层,但一直找不到任何东西.如何在Google地图上显示我的位置?
当我从自定义位图添加标记时,标记不会在我指定的点居中.
我是这样添加的:
// ID tramo
final int tramoId = tr.getId();
// Nodos
final Nodo[] nodos = tr.getNodos();
final PolylineOptions p = new PolylineOptions();
MarkerOptions m = new MarkerOptions();
// Seteamos posicion de linea y marker
m.position(semisuma(nodos));
for (final Nodo n : nodos) {
p.add(n.getLatLng());
}
// Color de linea y marker
BitmapDescriptor icon = null;
if (tr.getCapacidad() == 0) {
p.color(0xFF000000);
m = null;
} else if (tr.getCapacidad() - tr.getPlazasOcupadas() == 0) {
p.color(0xEEFF0000);
final TextDrawable drawable = new TextDrawable(0, …Run Code Online (Sandbox Code Playgroud) android centering android-drawable google-maps-android-api-2
我正在使用谷歌地图创建一个Android应用程序.这是代码:
MapFragActivity.java
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
public class MapFragActivity extends FragmentActivity {
private GoogleMap map;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map_frag);
map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
.getMap();
}
}
Run Code Online (Sandbox Code Playgroud)
AndroidManifest.xml中:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.him.mapfrag_rnd"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="15" />
<permission
android:name="com.him.mapfrag_rnd.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="com.him.mapfrag_rnd.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MapFragActivity"
android:label="@string/title_activity_map_frag" > …Run Code Online (Sandbox Code Playgroud) 我们如何用矢量资产文件实现地图标记图标,google以这样的方式显示它,以编程方式:
更新:
map.addMarker(new MarkerOptions()
.position(latLng)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.your_vector_asset))
.title(title);
Run Code Online (Sandbox Code Playgroud)
这在处理矢量资产时不起作用.提出问题的主要原因.上面代码的错误:
java.lang.IllegalArgumentException:无法解码图像.提供的图像必须是位图.
我想在两个位置之间找到行车方向:
LatLng(12.917745600000000000,77.623788300000000000)
LatLng(12.842056800000000000,7.663096499999940000)
Run Code Online (Sandbox Code Playgroud)
我试过的代码:
Polyline line = mMap.addPolyline(new PolylineOptions().
add(new LatLng(12.917745600000000000,77.623788300000000000),
new LatLng(12.842056800000000000,7.663096499999940000))
.width(5).color(Color.RED));
Run Code Online (Sandbox Code Playgroud)
但这在两点之间划了一条直线.
有没有其他方法/方法来获得这两点之间的行车路线.
java android google-maps directions google-maps-android-api-2
我正在尝试将Google地图放在滚动视图中,以便用户可以向下滚动其他内容以查看地图.问题是这个滚动视图占用了所有垂直触摸事件,因此地图的UI体验变得非常奇怪.
我知道在谷歌地图的V1中,您可以覆盖onTouch或setOnTouchListener以在MotionEvent.ACTION_DOWN上调用requestDisallowInterceptTouchEvent.我试图用V2实现类似的技巧无济于事.
到目前为止,我尝试过:
这些都没有解决滚动问题.我在这里错过了什么吗?如果有人在滚动视图中有一个地图的工作示例,请您分享代码示例吗?
我有以下代码为我绘制折线并且工作正常,但问题是它没有绘制交互式折线,绘制的线条缺少一些像素!
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONObject;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.maps.model.Polyline;
import com.google.android.gms.maps.model.PolylineOptions;
import android.app.ProgressDialog;
import android.content.Context;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class testRoute extends FragmentActivity implements OnClickListener {
private GoogleMap myMap;
Polyline line; …Run Code Online (Sandbox Code Playgroud) 我知道Gradle很强大,我想管理用于开发/生产Google Maps的API密钥
目前我总是需要手动注释一行并取消注释另一行以使其工作.有没有办法在Gradle中自动执行一些自定义发布配置?
<!-- MapView v2 API -->
<uses-library android:name="com.google.android.maps" />
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="[MY_DEV_KEY]" />
<!-- PROD
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="[MY_PROD_KEY]" />
-->
Run Code Online (Sandbox Code Playgroud) 以下
我不得不在两个标记之间添加许多折线,以形成一条路径.
其中一个标记是可拖动的,让我们说源是可拖动的.
因此,当用户开始拖动标记时,必须擦除先前绘制的路径,并且必须绘制新源和目标之间的新路径.
我能够绘制新路径,但是如何删除上一条路径呢?
这是绘制路径的方式:
for (int z = 0; z < list.size() - 1; z++) {
LatLng src = list.get(z);
LatLng dest = list.get(z + 1);
Polyline line = map.addPolyline(new PolylineOptions()
.add(new LatLng(src.latitude, src.longitude),
new LatLng(dest.latitude, dest.longitude))
.width(2).color(Color.RED).geodesic(true));
}
Run Code Online (Sandbox Code Playgroud)
我能得到的一个解决方案是
map.clear();
要清除所有折线,标记等..并再次添加标记,然后绘制路径.
但是一旦我开始拖动,标记就会被清除,因此在地图上看不到:(
谢谢
android ×9
google-maps ×3
centering ×1
directions ×1
geolocation ×1
gradle ×1
java ×1
key ×1
scala ×1