【问题标题】:Error while implementing Google Maps Android - SupportMapFragment cannot be resolved as Type实施 Google Maps Android 时出错 - SupportMapFragment 无法解析为类型
【发布时间】:2014-09-19 07:33:24
【问题描述】:

我刚开始编写 android 应用程序,在尝试将 Google 地图实现到片段中时出现此错误。我在网上冲浪,发现这是一个非常普遍的问题,但我也看到所有其他解决方案都不适用于我的情况。我将所有导入的代码部分粘贴在下面:

public class GeolocalizzazioneFragment extends Fragment {
private final LatLng CENTER_POINT = new LatLng(44.22625, 12.06861);

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_geolocalizzazione, container, false );
        //super.onCreateView(savedInstanceState);
        //setContentView(R.layout.activity_main);
        //ottieni il controllo del fragment su cui caricare la mappa
        GoogleMap map = ((MapSupportFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
        //centra la mappa su CENTER_POINT, con zoom 5
        //map.moveCamera(CameraUpdateFactory.newLatLngZoom(CENTER_POINT, 5));
        //centra la mappa sulla posizione del device
        map.setMyLocationEnabled(true);
        //animazione dello zoom sulla nostra animazione all'apertura
        //Parametri: livello di zoom=10; durata animazione = 1000 millisecondi (1 sec)
        map.animateCamera(CameraUpdateFactory.zoomTo(10), 1000, null);

        try{
            URL url = new URL("### url where I get xml with location marker datas ###");  //prendo l'URL del file XML dal quale prendo i dati dei POI
            URLConnection conn = url.openConnection();          //instauro la connessione col file XML

            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            org.w3c.dom.Document doc = builder.parse(conn.getInputStream());

            NodeList nodes = doc.getElementsByTagName("marker");
            for (int i=0; i<nodes.getLength(); i++)
            {
                Element item = (Element) nodes.item(i);
                String name = item.getAttribute("name");
                String address = item.getAttribute("address");
                String stringLat = item.getAttribute("lat");
                String stringLong = item.getAttribute("long");
                String icon = item.getAttribute("icon"); //assigned variable for the XML icon attribute
                Double lat = Double.valueOf(stringLat);
                Double lon = Double.valueOf(stringLong);

                // map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
                // map.setMyLocationEnabled(true);

                map.addMarker(new MarkerOptions()
                                .position(new LatLng(lat,lon))
                                .title(name)
                                .snippet(address)
                );
            }
        }catch (Exception e){
            e.printStackTrace();

        }


        return super.onCreateView(inflater, container, savedInstanceState);
    }

    }

我还检查了“Java 构建路径”窗口中的“Android 私有库”是否已正确检查,如您所见,我已经导入了“com.google.android.gms.maps.SupportMapFragment;”我还导入了“google-play-services.jar”库。 我的错误在下面一行:

GoogleMap map = ((MapSupportFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();

如果您需要其他部分代码,请询问,我会粘贴:)

P.S.:我的 IDE 是 Eclipse。

【问题讨论】:

  • 这一行是否有错误GoogleMap map = ((MapSupportFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); ?
  • 正是那一行.. @maven
  • 可能您缺少 com.google.android.gms.maps.SupportMapFragment 的导入语句。
  • 不..我导入了它,但我认为我解决了分割该代码的问题(经过 2 小时的尝试)。我写了这个并且 SupportMapFragment 没有更多错误: MapFragment map =((MapFragment)getFragmentManager().findFragmentById(R.id.map));谷歌地图 mappa = map.getMap();但是现在,当我遇到我的 Galaxy Note 2 时,应用程序在启动前崩溃:/
  • 你还需要导入支持jar

标签: java android eclipse google-maps


【解决方案1】:

尝试以下步骤,也许你错过了一些:

  • 将 google play 服务库复制到您的 lib 文件夹中
  • 将 android 支持的 v4 库复制到您的 lib 文件夹中
  • 将 google play 服务库和支持 android 的 v4 添加到您的构建路径中
  • 将 google play 服务项目导入您的工作区,选择您的 项目并右键单击>属性>android>添加项目库( google play service),不要勾选“is library”
  • 选择google play服务项目右键点击进入 properties>android>勾选“is lib”
  • 使用 FragmentActivity 并使用 Support 来使用支持的库。
  • 清理并重建,退出eclipse,卸载 之前在您的设备上的应用程序,加载 eclipse 并做另一个干净和 重建。

【讨论】:

  • @JoaoBiriba 我会按照你的步骤写结果给你,非常感谢你提供清晰的分步指南:D
  • @JoaoBiriba 我在第四点,当我尝试添加项目 lib 文件夹时,我无法浏览它。这是快照:link
  • 按照developer.android.com/google/play-services/setup.html中的步骤创建一个google play服务项目
  • 好的,我必须勾选“将项目复制到工作区”??抱歉,我才真正开始使用 android:/
  • 是的,它更好,别担心,我们在这里寻求帮助 :)
猜你喜欢
  • 2012-11-23
  • 1970-01-01
  • 2020-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-11
  • 2015-05-28
相关资源
最近更新 更多