2012-06-07 62 views

回答

0

我已经使用谷歌地图做了这样的事情。

String initial = "<!DOCTYPE html>\r\n" + 
    "<html> \r\n" + 
    "<head> \r\n" + 
    " <meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\" /> \r\n" + 
    " <title>Google Maps Multiple Markers</title> \r\n" + 
    " <script src=\"http://maps.google.com/maps/api/js?sensor=false\" \r\n" + 
    "   type=\"text/javascript\"></script>\r\n" + 
    "</head> \r\n" + 
    "<body>\r\n" + 
    " <div id=\"map\" style=\"width: 360px; height: 390px;\"></div>\r\n" + 
    "\r\n" + 
    " <script type=\"text/javascript\">\r\n" + 
    " var locations = ["; 
String second= " ];\r\n" + 
     "\r\n" + 
     " var map = new google.maps.Map(document.getElementById('map'), {\r\n" + 
     "  zoom: 8,"; 
String centerPoint =""; 
String finalpart = " mapTypeId: google.maps.MapTypeId.ROADMAP\r\n" + 
     " });\r\n" + 
    "\r\n" + 
    " var infowindow = new google.maps.InfoWindow();\r\n" + 
    "\r\n" + 
    " var marker, i;\r\n" + 
    "\r\n" + 
    " for (i = 0; i < locations.length; i++) { \r\n" + 
    "  marker = new google.maps.Marker({\r\n" + 
    "  position: new google.maps.LatLng(locations[i][1], locations[i][2]),\r\n" + 
    "  map: map\r\n" + 
    "  });\r\n" + 
    "\r\n" + 
    "  google.maps.event.addListener(marker, 'click', (function(marker, i) {\r\n" + 
    "  return function() {\r\n" + 
    "   infowindow.setContent(locations[i][0]);\r\n" + 
    "   infowindow.open(map, marker);\r\n" + 
    "  }\r\n" + 
    "  })(marker, i));\r\n" + 
    " }\r\n" + 
    " </script>\r\n" + 
    "</body>\r\n" + 
    "</html>"; 

html=new StringBuffer(); 
html.append(initial); 


point = "['"+name[i]+"',"+lat[i]+","+ lon[i]+","+i+"],"; 
html.append(point); 

html.append(second); 
    html.append(centerPoint); 
    html.append(finalpart); 
    //System.out.println("Plot is"+html.toString()); 
    BrowserFieldConfig _bfConfig = new BrowserFieldConfig();   
    _bfConfig.setProperty(BrowserFieldConfig.NAVIGATION_MODE,BrowserFieldConfig.NAVIGATION_MODE_POINTER); 
    _bfConfig.setProperty(BrowserFieldConfig.JAVASCRIPT_ENABLED, Boolean.TRUE); 
    _bfConfig.setProperty(BrowserFieldConfig.USER_AGENT, "MyApplication 1.0"); 
    BrowserField myBrowserField = new BrowserField(_bfConfig); 

    myBrowserField.displayContent(html.toString(), ""); 
    HorizontalFieldManager horf=new HorizontalFieldManager(HORIZONTAL_SCROLL); 
    horf.add(myBrowserField); 
    add(horf); 

当我点击图钉时,它会显示用户的名称。

+0

我希望它在黑莓地图不在谷歌地图 – Newts

0

这与另一个最近的问题非常相似。在另一个问题中,海报问如何为地图别针(标记)绘制自定义图像。目前还不清楚您是否需要自定义图像作为地图引脚,或者不需要。但是,如果你这样做,并乐意使用MapField,那么

see this solution

您只需不必担心在针脚上绘制第二层图层的部分,以获取圆形用户个人资料图片。

但是,您仍然会覆盖paint()方法绘制您的自定义引脚,然后确定用户在地图上的触摸/点击位置,并计算从该触摸/点击到引脚的距离,以确定哪个引脚是点击。处理触摸/点击对于触摸屏和非触摸屏设备的工作方式会有所不同,但我链接到您需要用于这两种方法的API方法。

+0

我希望它在黑莓地图不在谷歌地图 – Newts

+0

@Newts,我的答案是不适用于谷歌地图。它用于'MapField'类,它是BlackBerry API的一部分。您是否希望解决方案在单独的内置地图应用程序中绘制针脚(离开您的应用程序)?如果是这样,请在你的问题中澄清这一点。但是,如果您的应用程序使用MapField或MapField的子类显示嵌入式地图,那么我的答案就会起作用。 – Nate