我正在尝试在Android上的MapView上绘制一些文本.文本的绘制很顺利,但是阅读文本非常困难,因为它是白色的,没有黑色边框(就像MapViews上自然出现的其他文字一样,表示城市,州和国家).我似乎无法想象如何用黑色边框绘制文本.有人知道怎么做吗?
这是我现在正在使用的那种代码(这只是我在其中一个叠加层中找到的示例代码):
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
Paint textPaint = new Paint();
textPaint.setARGB(255, 255, 255, 255);
textPaint.setTextAlign(Paint.Align.CENTER);
textPaint.setTextSize(16);
textPaint.setTypeface(Typeface.DEFAULT_BOLD);
canvas.drawText("Some Text", 100, 100, textPaint);
super.draw(canvas, mapView, shadow);
}
Run Code Online (Sandbox Code Playgroud) 我正在更新现有的Android应用以使用新的Google Maps Android API v2.我有大约2500个标记要添加到地图中.使用旧版本的API,我发现当有2500个标记时,地图的响应性是可怕的,所以我不得不通过添加位于地图当前可见区域的标记来解决它.
我希望使用新的API可以更快地使用2500个标记,但它仍然很糟糕,即使在Nexus 4上也是如此,我没有看到任何类型的聚类选项.
所以我的问题是:如何确定某个纬度/经度点是否包含在地图的可见区域内?
我在文档中查看了VisibleRegion,但到目前为止我还没有运气.任何帮助是极大的赞赏.
*旁注:即使使用iPhone 3gs,iOS MKMapView(谷歌地图或Apple地图)上的2500个标记也非常流畅和响应.我仍然无法理解为什么它在Android上如此之慢,即使使用最新最好的硬件也是如此.
默认情况下,GoogleMap不会为地图拖动开始和拖动停止提供事件.我已经在这里报告了这个问题.
我想制作将使用普通事件并将其与之结合的自定义 .handleronTouchsetOnCameraChangeListener
但是我没能找到如何访问对象的onTouch事件GoogleMap.它不提供这样的回调.
我想知道如何在Google Map API v2中处理地图的onTouch事件?
android google-maps android-mapview google-maps-android-api-2
我想通过45.44334获得-23.4456的GeoPoint
我将什么值传递给GeoPoint的构造函数,因为它只需要Int.
使用Google Maps Android API V2时,我会按照Google Play服务设置文档进行检查,以确保安装了Google Play服务,并在我的主要活动中使用以下代码:
@Override
public void onResume()
{
checkGooglePlayServicesAvailability();
super.onResume();
}
public void checkGooglePlayServicesAvailability()
{
int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if(resultCode != ConnectionResult.SUCCESS)
{
Dialog dialog = GooglePlayServicesUtil.getErrorDialog(resultCode, this, 69);
dialog.setCancelable(false);
dialog.setOnDismissListener(getOnDismissListener());
dialog.show();
}
Log.d("GooglePlayServicesUtil Check", "Result is: " + resultCode);
}
Run Code Online (Sandbox Code Playgroud)
这很好用.但是,我注意到我已经存在的一些较旧的Android手机(大多数运行2.2)都缺少GooglePlayServices以及Google Maps应用程序本身.
LogCat将报告此错误:Google Maps Android API:Google地图应用程序丢失.
问题 - 如何在设备上对Google地图的可用性执行类似的检查?其次,如果用户已经安装了Google地图,我认为检查需要确保其安装的版本与Android Maps API的V2兼容.
更新 这是我的setupMapIfNeeded()方法,它在onCreate()的末尾被调用.这是我认为我想确定是否已安装Google地图并提醒用户的地方,请参阅else块:
private void setUpMapIfNeeded()
{
// Do a null check to confirm that we have not already instantiated the map.
if …Run Code Online (Sandbox Code Playgroud) 我想实现平滑过渡以模拟在地图上移动的汽车标记.
是否可以在android map api v2中设置动画标记?
android google-maps android-maps android-mapview google-maps-android-api-2
我有这个代码
itemizedOverlay = new MyItemizedOverlay(drawable,this);
itemizedOverlay.setGestureDetector(new GestureDetector(new MyGestureDetecor()));
Run Code Online (Sandbox Code Playgroud)
但在Eclipse中new GestureDetector标记为Deprecated.
我想避免使用已弃用的方法.
我怎么能解决这个问题?
什么是不弃用的表格?
我的每个底角都有两个按钮MapView,部分遮挡了左下角的Google徽标.
为了符合API的条款和条件,我需要将Google徽标重新定位到更加明显的位置.即在按钮上方.
谷歌API文档声明谷歌徽标是在onDraw()方法中绘制的,MapView但我不知道如何正确覆盖它,因为谷歌地图是封闭源.
我能做到这一点在iPhone通过找到正确UIView的MKMapView's孩子,但我想不通,我怎么能在Android中做到这一点.
背景
我有一个更大的应用程序,我在使用新的Google Maps API时遇到了一些问题.我尝试用不同的问题描述它,但由于它看起来太复杂,我决定开始一个新项目,尽可能简单并尝试重现问题.所以这就是.
情况
我正在使用Fragments并希望放入MapView内部.我不想用MapFragment.我准备的示例项目可能不是很漂亮,但我试图让它尽可能简单,它必须包含原始应用程序中的一些元素(再次简化).我有一个Activity和我的习惯Fragment,MapView以编程方式添加.将Map包含一些点/ Markers.点击一个之后Marker的InfoWindow被示出并点击它引起下Fragment所示(与正被replace()在内容功能).
问题
我有两个问题:
当显示Mapwith 时,Markers屏幕旋转会导致Class not found when unmarshalling我的自定义MyMapPoint类错误- 我不知道为什么以及它意味着什么.
我点击Marker然后InfoWindow.在此之后我按下硬件后退按钮.现在我可以看到Map但没有Markers并且集中在0,0一点.
代码
主要活动
public class MainActivity extends FragmentActivity {
private ArrayList<MyMapPoint> mPoints = new ArrayList<MyMapPoint>();
@Override
protected void onCreate(Bundle …Run Code Online (Sandbox Code Playgroud) android android-fragments android-mapview android-maps-v2 fragment-lifecycle
我想MapView进入我的内心Fragment
这是我的FragmentLayoutxml文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#17df0d"
android:orientation="vertical" >
<com.google.android.gms.maps.MapView
android:id="@+id/mapview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/textView1"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="70dp" >
</com.google.android.gms.maps.MapView>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
我的AndroidManifest.xml档案
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="a.b.c.d"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="your_api_key" />
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
</application>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<permission
android:name="a.b.c.d.permission.MAPS_RECEIVE"
android:protectionLevel="signature" …Run Code Online (Sandbox Code Playgroud)