2014-09-19 47 views
1

我在编程android应用程序的开始,当我尝试将Google地图实现为片段时出现此错误。我浏览了网页,发现这是一个非常常见的问题,但我也看到所有其他解决方案都不适用于我的案例。我贴的代码以下的部分与全部进口:实施谷歌地图时出错Android - SupportMapFragment无法解析为类型

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。

+0

此错误* GoogleMap map =((MapSupportFragment)getFragmentManager()。findFragmentById(R.id.map))。getMap(); *? – Gattsu 2014-09-19 07:42:22

+0

就是这条线.. @maven – 2014-09-19 07:44:08

+0

也许你错过了com.google.android.gms.maps.SupportMapFragment的导入语句。 – Gattsu 2014-09-19 07:45:58

回答

1

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

  • 复制谷歌播放服务lib放到您的lib文件夹
  • 复制Android的支持V4的lib在你的lib文件夹
  • 加入谷歌播放服务lib和Android支持v4到您的构建路径
  • 将google play服务项目导入到您的工作区中选择您的 项目并右键单击>属性> android>添加项目库( google play服务)并执行不勾选“是图书馆”
  • 选择谷歌播放服务项目,右键单击并转到 属性>机器人>嘀“的LIB”
  • 使用FragmentActivity并使用支持使用支持库。
  • 清理和重建,退出eclipse,卸载 应用程序以前在您的设备上,加载日食和做另一个干净和 重建。
+0

我完全搞砸了最后一个!感谢您指出! – shyam 2014-09-19 07:59:41

+0

@shyam没有问题谢谢你的帮助:) – 2014-09-19 08:04:31

+0

@JoaoBiriba我会按照你的步骤,我会写你的结果,非常感谢你一步一步的指导:D – 2014-09-19 08:05:21