如何判断点击的是百度地图点击覆盖物还是覆盖物

android 百度地图系列之添加覆盖物和覆盖物的点击事件 - 博客频道 - CSDN.NET
jing__jie的博客
暂时专注于android
分类:android--百度地图
之前讲了百度地图定位和地图基本操作,这篇博客讲一下,怎么去给地图添加覆盖物,并当点击覆盖物的时候显示详细信息。
要给地图添加覆盖物,首先需要覆盖物的经纬度,如果还要实现点击事件,显示详细的信息,还需要覆盖物的描述信息(如图片,位置名称等),所以先新建一个实体类,来存放这些信息。
实体类必须实现序列化接口
package com.zwinsoft.mybaidumap.
import java.io.S
* 地图标注信息实体类
* jing__jie
public class MarkerInfoUtil implements Serializable{
private static final long serialVersionUID = 4734593L;
private double
private double
private int imgId;
public MarkerInfoUtil() {}
public MarkerInfoUtil(double latitude, double longitude, String name, int imgId, String description) {
this.latitude =
this.longitude =
this.name =
this.imgId = imgId;
this.description =
public String toString() {
return "MarkerInfoUtil [latitude=" + latitude + ", longitude=" + longitude + ", name=" + name + ", imgId="
+ imgId + ", description=" + description + "]";
public double getLatitude() {
public void setLatitude(double latitude) {
this.latitude =
public double getLongitude() {
public void setLongitude(double longitude) {
this.longitude =
public String getName() {
public void setName(String name) {
this.name =
public int getImgId() {
return imgId;
public void setImgId(int imgId) {
this.imgId = imgId;
public String getDescription() {
public void setDescription(String description) {
this.description =
在activity中添加几条markerinfo数据,用来显示marker
private void setMarkerInfo() {
infos = new ArrayList&MarkerInfoUtil&()
infos.add(new MarkerInfoUtil(117.216624,39.142693,"天津站",R.drawable.tianjinzhan,"天津站,俗称天津东站,隶属北京铁路局管辖"))
infos.add(new MarkerInfoUtil(117.176955,39.111345,"南开大学",R.drawable.nankai,"正式成立于1919年,是由严修、张伯苓秉承教育救国理念创办的综合性大学。"))
infos.add(new MarkerInfoUtil(117.174081,39.094994,"天津水上公园",R.drawable.shuishang,"天津水上公园原称青龙潭,日正式对游客开放,有北方的小西子之称。"))
在activity_main.xml中,添加一个按钮,当点击的时候显示marker,再次点击的时候marker消失。
case R.id.btn_marker:
if(!showMarker){
addOverlay(infos);
showMarker = true;
mBaiduMap.clear();
showMarker = false;
private void addOverlay(List&MarkerInfoUtil& infos2) {
mBaiduMap.clear();
BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.ditu1);
LatLng latLng = null;
for(MarkerInfoUtil info:infos){
latLng = new LatLng(info.getLatitude(),info.getLongitude());
options = new MarkerOptions()
.position(latLng)
.icon(bitmap)
.zIndex(9)
.draggable(true);
marker = (Marker) mBaiduMap.addOverlay(options);
Bundle bundle = new Bundle();
bundle.putSerializable("info", info);
marker.setExtraInfo(bundle);
MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);
mBaiduMap.setMapStatus(msu);
这样marker就显示出来了。效果图:
下面需要添加marker的点击事件,使marker在点击的时候,显示info中的信息。首先需要一个布局用来展示图片,名称等信息。
android:id="@+id/rl_marker"
android:layout_alignParentTop="true"
android:layout_width="match_parent"
android:layout_height="220dp"
android:background="#ffffff"
android:visibility="gone"
android:clickable="true"&
android:id="@+id/iv_img"
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_margin="10dp"/&
android:id="@+id/tv_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/iv_img"
android:textSize="18sp"
android:textColor="#000000"
android:layout_marginBottom="5dp"/&
android:id="@+id/tv_description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/tv_name"
android:textSize="14sp"
android:textColor="#000000"/&
添加marker的点击事件
//添加marker点击事件的监听
mBaiduMap.setOnMarkerClickListener(new OnMarkerClickListener() {
public boolean onMarkerClick(Marker marker) {
//从marker中获取info信息
Bundle bundle = marker.getExtraInfo()
MarkerInfoUtil infoUtil = (MarkerInfoUtil) bundle.getSerializable("info")
//将信息显示在界面上
ImageView iv_img = (ImageView)rl_marker.findViewById(R.id.iv_img)
iv_img.setBackgroundResource(infoUtil.getImgId())
TextView tv_name = (TextView)rl_marker.findViewById(R.id.tv_name)
tv_name.setText(infoUtil.getName())
TextView tv_description = (TextView)rl_marker.findViewById(R.id.tv_description)
tv_description.setText(infoUtil.getDescription())
//将布局显示出来
rl_marker.setVisibility(View.VISIBLE)
return true
再添加一个地图点击事件,当点击地图的时候,将详细信息布局影藏
mBaiduMap.setOnMapClickListener(new OnMapClickListener() {
public boolean onMapPoiClick(MapPoi arg0) {
return false;
public void onMapClick(LatLng arg0) {
rl_marker.setVisibility(View.GONE);
其中点击显示info信息的布局是固定的,有时候我们需要显示一个infowindow,跟随在marker上,这就需要百度地图提供的InfoWindow来实现。
在marker的点击监听中添加
//infowindow中的布局
TextView tv = new TextView(MainActivity.this)
tv.setBackgroundResource(R.drawable.infowindow)
tv.setPadding(20, 10, 20, 20)
tv.setGravity(Gravity.CENTER)
tv.setTextColor(android.graphics.Color.WHITE)
tv.setText(infoUtil.getName())
bitmapDescriptor = BitmapDescriptorFactory.fromView(tv)
//infowindow位置
LatLng latLng = new LatLng(infoUtil.getLatitude(), infoUtil.getLongitude())
//infowindow点击事件
OnInfoWindowClickListener listener = new OnInfoWindowClickListener() {
public void onInfoWindowClick() {
//隐藏infowindow
mBaiduMap.hideInfoWindow()
//显示infowindow,-47是偏移量,使infowindow向上偏移,不会挡住marker
InfoWindow infoWindow = new InfoWindow(bitmapDescriptor, latLng, -47, listener)
mBaiduMap.showInfoWindow(infoWindow)
下面总结一下MainActivity代码,包含地图控制(地图模式控制,地图缩放控制),地图定位,带方向的定位,显示覆盖物,显示覆盖物点击事件等,希望大家多多指正。
package com.zwinsoft.
import java.util.ArrayL
import java.util.L
import com.baidu.location.BDL
import com.baidu.location.BDLocationL
import com.baidu.location.LocationC
import com.baidu.location.LocationClientO
import com.baidu.mapapi.SDKI
import com.baidu.mapapi.map.BaiduM
import com.baidu.mapapi.map.BaiduMap.OnMapClickL
import com.baidu.mapapi.map.BaiduMap.OnMapStatusChangeL
import com.baidu.mapapi.map.BaiduMap.OnMarkerClickL
import com.baidu.mapapi.map.BitmapD
import com.baidu.mapapi.map.BitmapDescriptorF
import com.baidu.W
import com.baidu.Window.OnInfoWindowClickL
import com.baidu.mapapi.map.MapP
import com.baidu.mapapi.map.MapS
import com.baidu.mapapi.map.MapStatusU
import com.baidu.mapapi.map.MapStatusUpdateF
import com.baidu.mapapi.map.MapV
import com.baidu.mapapi.map.M
import com.baidu.mapapi.map.MarkerO
import com.baidu.mapapi.map.MyLocationC
import com.baidu.mapapi.map.MyLocationConfiguration.LocationM
import com.baidu.mapapi.map.MyLocationD
import com.baidu.mapapi.map.OverlayO
import com.baidu.mapapi.model.LatL
import com.zwinsoft.mybaidumap.entity.MarkerInfoU
import com.zwinsoft.mybaidumap.tools.MyOrientationL
import com.zwinsoft.mybaidumap.tools.MyOrientationListener.OnOrientationL
import android.app.A
import android.os.B
import android.view.G
import android.view.V
import android.view.View.OnClickL
import android.widget.ImageB
import android.widget.ImageV
import android.widget.RelativeL
import android.widget.TextV
import android.widget.T
* 我的百度地图首页
* jing__jie
public class MainActivity extends Activity implements OnClickListener {
private MapView mMapView = null;
private BaiduMap mBaiduM
private ImageButton ib_large,ib_small,ib_mode,ib_loc,ib_traffic,ib_
private boolean modeFlag = true;
private float zoomL
private LocationClient mLocationC
private MyLocationListener mLocationL
private boolean isFirstLocation = true;
private BitmapDescriptor bitmapD
private MyOrientationListener myOrientationL
private float mLastX;
private List&MarkerInfoUtil&
private boolean showMarker = false;
private RelativeLayout rl_
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
initView();
initMap();
initLocation();
initMyLoc();
setMarkerInfo();
private void setMarkerInfo() {
infos = new ArrayList&MarkerInfoUtil&();
infos.add(new MarkerInfoUtil(117.216624,39.142693,"天津站",R.drawable.tianjinzhan,"天津站,俗称天津东站,隶属北京铁路局管辖"));
infos.add(new MarkerInfoUtil(117.176955,39.111345,"南开大学",R.drawable.nankai,"正式成立于1919年,是由严修、张伯苓秉承教育救国理念创办的综合性大学。"));
infos.add(new MarkerInfoUtil(117.174081,39.094994,"天津水上公园",R.drawable.shuishang,"天津水上公园原称青龙潭,日正式对游客开放,有北方的小西子之称。"));
private void initMyLoc() {
bitmapDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.arrow);
myOrientationListener = new MyOrientationListener(this);
myOrientationListener.setOnOrientationListener(new OnOrientationListener() {
public void onOrientationChanged(float x) {
private void initMap() {
mMapView = (MapView) findViewById(R.id.bmapView);
mMapView.showZoomControls(false);
mMapView.removeViewAt(1);
mBaiduMap = mMapView.getMap();
MapStatus mMapStatus = new MapStatus.Builder().zoom(15).build();
MapStatusUpdate mMapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mMapStatus);
mBaiduMap.setMapStatus(mMapStatusUpdate);
mBaiduMap.setOnMapStatusChangeListener(new OnMapStatusChangeListener() {
public void onMapStatusChangeStart(MapStatus arg0) {
public void onMapStatusChangeFinish(MapStatus arg0) {
public void onMapStatusChange(MapStatus arg0) {
zoomLevel = arg0.
mBaiduMap.setOnMapClickListener(new OnMapClickListener() {
public boolean onMapPoiClick(MapPoi arg0) {
return false;
public void onMapClick(LatLng arg0) {
rl_marker.setVisibility(View.GONE);
private void initLocation() {
mLocationClient = new LocationClient(this);
mLocationListener = new MyLocationListener();
mLocationClient.registerLocationListener(mLocationListener);
LocationClientOption option = new LocationClientOption();
option.setCoorType("bd09ll");
option.setIsNeedAddress(true);
option.setOpenGps(true);
option.setScanSpan(1000);
option.setIsNeedLocationPoiList(true);
mLocationClient.setLocOption(option);
private void initView() {
ib_large = (ImageButton)findViewById(R.id.ib_large);
ib_large.setOnClickListener(this);
ib_small = (ImageButton)findViewById(R.id.ib_small);
ib_small.setOnClickListener(this);
ib_mode = (ImageButton)findViewById(R.id.ib_mode);
ib_mode.setOnClickListener(this);
ib_loc = (ImageButton)findViewById(R.id.ib_loc);
ib_loc.setOnClickListener(this);
ib_traffic = (ImageButton)findViewById(R.id.ib_traffic);
ib_traffic.setOnClickListener(this);
ib_marker = (ImageButton)findViewById(R.id.ib_marker);
ib_marker.setOnClickListener(this);
rl_marker = (RelativeLayout)findViewById(R.id.rl_marker);
public void onClick(View v) {
switch (v.getId()) {
case R.id.ib_large:
if (zoomLevel & 18) {
mBaiduMap.setMapStatus(MapStatusUpdateFactory.zoomIn());
ib_small.setEnabled(true);
showInfo("已经放至最大,可继续滑动操作");
ib_large.setEnabled(false);
case R.id.ib_small:
if (zoomLevel & 6) {
mBaiduMap.setMapStatus(MapStatusUpdateFactory.zoomOut());
ib_large.setEnabled(true);
ib_small.setEnabled(false);
showInfo("已经缩至最小,可继续滑动操作");
case R.id.ib_mode:
if(modeFlag){
modeFlag = false;
mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
showInfo("开启卫星模式");
modeFlag = true;
mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
showInfo("开启普通模式");
case R.id.ib_loc:
isFirstLocation = true;
showInfo("返回自己位置");
case R.id.ib_traffic:
if(mBaiduMap.isTrafficEnabled()){
mBaiduMap.setTrafficEnabled(false);
ib_traffic.setBackgroundResource(R.drawable.offtraffic);
showInfo("关闭实时交通图");
mBaiduMap.setTrafficEnabled(true);
ib_traffic.setBackgroundResource(R.drawable.ontraffic);
showInfo("开启实时交通图");
case R.id.ib_marker:
if(!showMarker){
showInfo("显示覆盖物");
addOverlay(infos);
showMarker = true;
ib_marker.setBackgroundResource(R.drawable.ditu4);
showInfo("关闭覆盖物");
mBaiduMap.clear();
showMarker = false;
ib_marker.setBackgroundResource(R.drawable.ditu3);
private void addOverlay(List&MarkerInfoUtil& infos) {
mBaiduMap.clear();
BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.ditu1);
LatLng latLng = null;
for(MarkerInfoUtil info:infos){
latLng = new LatLng(info.getLatitude(),info.getLongitude());
options = new MarkerOptions()
.position(latLng)
.icon(bitmap)
.zIndex(9)
.draggable(true);
marker = (Marker) mBaiduMap.addOverlay(options);
Bundle bundle = new Bundle();
bundle.putSerializable("info", info);
marker.setExtraInfo(bundle);
MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);
mBaiduMap.setMapStatus(msu);
mBaiduMap.setOnMarkerClickListener(new OnMarkerClickListener() {
public boolean onMarkerClick(Marker marker) {
Bundle bundle = marker.getExtraInfo();
MarkerInfoUtil infoUtil = (MarkerInfoUtil) bundle.getSerializable("info");
ImageView iv_img = (ImageView)rl_marker.findViewById(R.id.iv_img);
iv_img.setBackgroundResource(infoUtil.getImgId());
TextView tv_name = (TextView)rl_marker.findViewById(R.id.tv_name);
tv_name.setText(infoUtil.getName());
TextView tv_description = (TextView)rl_marker.findViewById(R.id.tv_description);
tv_description.setText(infoUtil.getDescription());
rl_marker.setVisibility(View.VISIBLE);
TextView tv = new TextView(MainActivity.this);
tv.setBackgroundResource(window);
tv.setPadding(20, 10, 20, 20);
tv.setTextColor(android.graphics.Color.WHITE);
tv.setText(infoUtil.getName());
tv.setGravity(Gravity.CENTER);
bitmapDescriptor = BitmapDescriptorFactory.fromView(tv);
LatLng latLng = new LatLng(infoUtil.getLatitude(), infoUtil.getLongitude());
OnInfoWindowClickListener listener = new OnInfoWindowClickListener() {
public void onInfoWindowClick() {
mBaiduMap.hideInfoWindow();
InfoWindow infoWindow = new InfoWindow(bitmapDescriptor, latLng, -47, listener);
mBaiduMap.showInfoWindow(infoWindow);
return true;
private class MyLocationListener implements BDLocationListener{
public void onReceiveLocation(BDLocation location) {
MyLocationData data = new MyLocationData.Builder()
.accuracy(location.getRadius())
.direction(mLastX)
.latitude(location.getLatitude())
.longitude(location.getLongitude())
mBaiduMap.setMyLocationData(data);
mLatitude = location.getLatitude();
mLongitude = location.getLongitude();
MyLocationConfiguration configuration = new MyLocationConfiguration(LocationMode.NORMAL, true, bitmapDescriptor);
mBaiduMap.setMyLocationConfigeration(configuration);
if(isFirstLocation){
LatLng ll = new LatLng(location.getLatitude(),location.getLongitude());
MapStatusUpdate status = MapStatusUpdateFactory.newLatLng(ll);
mBaiduMap.animateMapStatus(status);
isFirstLocation = false;
showInfo("位置:" + location.getAddrStr());
protected void onStart() {
super.onStart();
mBaiduMap.setMyLocationEnabled(true);
if(!mLocationClient.isStarted()){
mLocationClient.start();
myOrientationListener.start();
protected void onStop() {
super.onStop();
mBaiduMap.setMyLocationEnabled(false);
if(mLocationClient.isStarted()){
mLocationClient.stop();
myOrientationListener.stop();
protected void onDestroy() {
super.onDestroy();
mMapView.onDestroy();
protected void onResume() {
super.onResume();
mMapView.onResume();
protected void onPause() {
super.onPause();
mMapView.onPause();
private void showInfo(String str){
Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();
排名:千里之外
(5)(22)(3)(3)(3)(0)(0)<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&百度地图能判断1个点和1个覆盖物是否重叠吗?_百度地图api吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:5,300贴子:
百度地图能判断1个点和1个覆盖物是否重叠吗?收藏
百度地图能判断1个点和1个覆盖物是否重叠吗?比如我想判断一个点是否在上海这个行政区划里?不知道是否能实现。只需要说明一下实现方式就可以了,能有资料当然就更好了!谢谢!
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或百度地图API能判断1个点和1个覆盖物是否重叠吗?_百度知道【百度地图API】如何判断点击的是地图还是覆盖物?
【百度地图API】如何判断点击的是地图还是覆盖物?
[摘要:择要:良多API快乐喜爱者问我,为何我面击的是marker,而map也会相应该事情呢?如何才干判别,我面击的是标注,照样舆图呢?上面一路去看看。 --------------------------------------------------]
摘要:很多API爱好者问我,为什么我点击的是marker,而map也会响应该事件呢?怎样才能判断,我点击的是标注,还是地图呢?下面一起来看看。&------------------------------------------------------------先看看地图有哪些事件,查看官网类参考,翻到事件:650) this.width=650;" src="/uploads/u/24/8d/248d82ae0efe086c926bb14.jpg" alt="\" style="margin:0padding:0border:0" />&大家看到这里的参数了麽?其实,在点击物体时,通过这些参数就能够判断所点击的物体是什么了。&用marker举例:先创建一个marker//覆盖物Marker &&&&var&pmk&=&new&BMap.Point(116..946583);&&&&var&mk&=&new&BMap.Marker(pmk); &&&&map.addOverlay(mk);&&然后对地图添加点击事件,如果判断出来是覆盖物,就弹出相应的对话框。map.addEventListener("click",function(e){ &&&&&&&&if(e.overlay){ &&&&&&&&&&&&alert('你点击的是覆盖物:'+e.overlay.toString());&&& &&&&&&&&}else{ &&&&&&&&&&&&alert('你点击的是地图'); &&&&&&&&} &&&&});添加一堆覆盖物,然后给每个覆盖物写点击事件。650) this.width=650;" src="/uploads/u/6f/81/6f6fb9ccb1e5d7fc682f7.jpg" alt="\" style="margin:0padding:0border:0" />&&比如我点击了多边形,就会弹出这个。650) this.width=650;" src="/uploads/u/a5/5b/a55bf0b8235ccd3bba0551cfd705201a.jpg" alt="\" style="margin:0padding:0border:0" />&全部源代码:&!DOCTYPE&html& &html& &head& &meta&http-equiv="Content-Type"&content="text/&charset=utf-8"&/& &title&点击事件&/title& &script&type="text/javascript"&src="http://api./api?key=v=1.3"&&/script& &/head&
&body& &&&!--百度地图容器--& &&&div&style="width:697height:550border:#ccc&solid&1"&id="dituContent"&&/div& &/body& &script&type="text/javascript"& &&&&var&map&=&new&BMap.Map("dituContent"); &&&&var&point&=&new&BMap.Point(116..897445); &&&&map.centerAndZoom(point,12); &&&&map.enableScrollWheelZoom();
&&&&map.addEventListener("click",function(e){ &&&&&&&&if(e.overlay){ &&&&&&&&&&&&alert('你点击的是覆盖物:'+e.overlay.toString());&&& &&&&&&&&}else{ &&&&&&&&&&&&alert('你点击的是地图'); &&&&&&&&} &&&&});
&&&&//覆盖物Marker &&&&var&pmk&=&new&BMap.Point(116..946583); &&&&var&mk&=&new&BMap.Marker(pmk); &&&&map.addOverlay(mk);
&&&&//覆盖物Label &&&&var&plb&=&new&BMap.Point(116..958087); &&&&var&lb&=&new&BMap.Label('我是覆盖物Label',{point:plb}); &&&&map.addOverlay(lb);
&&&&//覆盖物Polyline &&&&var&pl&=&new&BMap.Polyline([new&BMap.Point(116..919583),new&BMap.Point(116..919583)],{strokeWeight:10}) &&&&map.addOverlay(pl);
&&&&//覆盖物Polygon &&&&var&pg&=&new&BMap.Polygon([new&BMap.Point(116..893016),new&BMap.Point(116..893016),new&BMap.Point(116..811036),new&BMap.Point(116..811036)]); &&&&map.addOverlay(pg);
&/script& &/html&
感谢关注 Ithao123精品文库频道,是专门为互联网人打造的学习交流平台,全面满足互联网人工作与学习需求,更多互联网资讯尽在 IThao123!
Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
产品设计是互联网产品经理的核心能力,一个好的产品经理一定在产品设计方面有扎实的功底,本专题将从互联网产品设计的几个方面谈谈产品设计
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
IThao123周刊

我要回帖

更多关于 百度地图清除覆盖物 的文章

 

随机推荐