当前位置: 首页 > 知识库问答 >
问题:

标记选项图标错误

曾承弼
2023-03-14
import android.app.Dialog;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
import android.view.MenuItem;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
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;

public class MainActivity extends FragmentActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // Getting Google Play availability status
    int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getBaseContext());
    // Showing status
    if(status!=ConnectionResult.SUCCESS){ // Google Play Services not available
        int requestCode = 10;
        Dialog dialog = GooglePlayServicesUtil.getErrorDialog(status, this, requestCode);
        dialog.show();
    }
    else{ // Google Play Services are available
        // Getting reference to the SupportMapFragment of activity_main.xml
        SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
        // Getting Google Map object from the fragment
        GoogleMap googleMap = fm.getMap();
        // Enabling MyLocation Layer of Google
        googleMap.setMyLocationEnabled(true);
        // Getting LocationManager object from System Service LOCATION_SERVICE
        LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
        // Creating a criteria object to retrieve provider
        Criteria criteria = new Criteria();
        // Getting the name of the best provider
        String provider = locationManager.getBestProvider(criteria, true);
        // Getting current location
        Location location = locationManager.getLastKnownLocation(provider);
        LocationListener locationListener = new LocationListener(){
            public void onLocationChanged(Location location){
                // Redraw the marker when get location update
                drawMarker(location);
            }

            @Override
            public void onProviderDisabled(String provider) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onProviderEnabled(String provider) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onStatusChanged(String provider, int status,
                    Bundle extras) {
                // TODO Auto-generated method stub

            }
        };
        if(location!=null){
            // Place the initial marker
            drawMarker(location);
        }
        locationManager.requestLocationUpdates(provider, 0, 0, locationListener);
    }
}

private void drawMarker(Location location){
    SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
    GoogleMap googleMap = fm.getMap();
    googleMap.clear();
    LatLng currentPosition = new LatLng(location.getLatitude(),location.getLongitude());
    googleMap.addMarker(new MarkerOptions()
    .position(currentPosition)
    .snippet("Lat:" + location.getLatitude() + "Lng" + location.getLongitude()))
    .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
    .title("ME");
}

如果我将.icon替换为.seticon,那么整个新的MarkerOptions()都是红色的,并且我得到了这个错误,不能在原语类型void上调用title(String)。我该怎么办?

共有1个答案

濮阳原
2023-03-14

创建标记时放错了括号,因此无法识别方法图标标题

将代码替换为:

mMap.addMarker(new MarkerOptions()
        .position(currentPosition)
        .snippet("Lat:" + location.getLatitude() + "Lng" + location.getLongitude())
        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
        .title("ME"));

这一点非常明显,因为markeroptions对象没有seticon方法,但marker有一个方法。并向映射添加markeroptions返回marker对象:-)

Marker myMarker = mMap.addMarker(new MarkerOptions()
        .position(currentPosition)
        .snippet("Lat:" + location.getLatitude() + "Lng" + location.getLongitude())
        .title("ME"));

myMarker.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE));
 类似资料:
  • 我创建了一个应用程序,用户需要走到地图上的一个点。但他们需要自己找到一条通往终点的路线。Ive创建了一个带有标记的地图,但默认情况下,如果用户单击标记,将显示“开始导航”和“在谷歌地图中查看”选项。是否可以禁用这些选项? 标记单击时显示的选项

  • 起导航作用的按钮应该写为链接,在表单内起提交作用的按钮,Jquery Mobile会同样的用样式来标记。 将链接样式化为按钮 Styling links as buttons 在page的区域内,可以通过给链接加data-role="button"的属性样式化为按钮。Jquery Mobile会给链接加一些必要的class来把他表现为按钮。 html代码: <a href="index.html"

  • 我试图在点击时更改标记的图标编号。我使用的是角度谷歌地图。我正在使用本地资产文件夹而不是服务API设置iNurl。 单击标记时,如何更改上述图标。

  • 问题内容: 我尝试将插入号向下图标添加到多个选项的第一个选择中,如下图所示: 我无法在上方的小提琴上看到该图标。 以及相应的代码: 问题答案: 您可以简单地将FontAwesome图标添加为所选下拉菜单作为文本。您只需要CSS中的一些东西,FontAwesome CSS和unicode。例如: 单击图标可找到unicode:Fontawesome 更新:从Github问题开始,将multiple属

  • 这个对话框是 “高级自解压选项”对话框 的一部分,包含下列设置: 自解压窗口标题 设置指定的文本作为自解压窗口的标题。 相应的 自解压脚本 命令 - Title 自解压窗口显示的文本 添加在自解压模块的文本输出窗口中指定的纯文本或HTML 字符串。 对于纯文本,为了使字符串和对话框匹配,自解压模块将合并和重新格式化指定的字符串。所以如果您希望重新生成一个新的段落,您需要在它前面放一个空的字符串。