Zh OpenStreetMap Visualization: Difference between revisions

From Documentation
Jump to navigation Jump to search
Line 290: Line 290:
For example, here SQL text for getting placemarks
For example, here SQL text for getting placemarks


<code>
<pre>
SELECT latitude as lat, longitude as lng, createddate, title, description, descriptionhtml, icontype  
SELECT latitude as lat, longitude as lng, createddate, title, description, descriptionhtml, icontype  
FROM demo_zhosmmaps_markers as t  
FROM demo_zhosmmaps_markers as t  
WHERE t.mapid = 2  
WHERE t.mapid = 2  
   and t.createdbyuser=:userid
   and t.createdbyuser=:userid
</code>
</pre>


In this case variable will be replaced with current user ID
In this case variable will be replaced with current user ID


== Conclusion ==
== Conclusion ==

Revision as of 11:23, 23 June 2020

Preface

Use visualization to show data from other data sources (database tables).

To do it you should do next steps:

  • create Structure
  • create Data Source, assign your Structure
  • create Path or Placemark, assign your Data Source

Here you can see main page for visualization.

Structure

In Structure you enter information about your data, ie column names to use from data source, and other attributes.

Data Source

In Data Source you define SQL statement to get data from database.

For flexible use there is only one field for SELECT statement, you can just create it in phpMyAdmin, copy/paste and use it.

You can use for table names as full names, as names in joomla notation (ie starting from #__)

And don't forget about ORDER BY clause in SELECT statement to get correct coordinates order for your lines or polygons

Examples

Lets create a few examples to show how you can use visualization on your site.

I don't create new tables, I will use tables from my extension.

In Example 1,Example 2 and Example 3 I set Result Object to Create one object for all rows. It means all my data will be displayed as one object. And result object is Line as I set in Path properties.

Separate columns for latitude and longitude

Here my data for example


Lets create Structure

Add main information

Add columns description

In this example I created structure, which describe that my data will contain two columns - lat and lng.

For this our test example we have to define only two fields.

In other words my SQL will have columns lat and lng


When come back to Structure list we can see our Structure.

For easy way you can press Close button in toolbar to return to main visualization page


Now we need to create Data Source.

As you can see I use table for placemarks, because it contains latitude and longitude in different fields.

I added aliases for my columns, because I describe in Structure names which differ from table column names.

And as you can see in this source I use our Structure.

When come back to Data Source list we can see our Data Source


Now lets show this data.

Go to Paths and create new one

Here you set Object Type and Visualization Data Source.

And on details page we need define some attributes to our Line

As you can see I set Hover Color.

Moreover I enter Addition HTML text, set Action by click to open popup and other Path properties.

Publish Path and lets check

Main view

Hover

Click


One column for coordinates (latitude and longitude)

I will rewrite my SQL to get one column, I just concatenate columns

Here my data for example


Create Structure

In this case I defined column Coordinates. It means my column contain both coordinates.

Moreover you have to define Separator in coordinates because it is coordinates delimiter.

In addition to this you have to define Coordinates order, ie how it is stored in your column.

And my Data Source

Here I use joomla notation for table.

The result screens will be the same (because the same data).


One column for coordinates array

I will use my table for path data as data source

Here my data for example


Create Structure

In this case I defined column Array of Coordinates. It means my column contain array of both coordinates.

As in previous example you have to define Separator in coordinates because it is coordinates delimiter and Coordinates order, ie how it is stored in your column. In addition to this you have to define Separator in Array, because it is pair of coordinates delimiter.

It is like as it is done in Path details (Path property), in this property I use comma as delimiter between latitude and longitude, and I use semicolon to separate pairs in array.


And my Data Source

Here I use joomla notation for table too.

The result screens will be the same as I will display path by its definition.

Server

In some cases you need to connect to external database servers

In this case you should create server configuration

As for Driver field, for MySQL you can use mysql or mysqli values, for ms sql server use mssql

And assign it to Data Source


Add Start and End points for Line

If you set path type to Line (to show your data as line) you can show start and end points of your line.

It can be done in Structure part. There is Line tab with two blocks for markers.

If field Marker set to No – marker is not displayed.

If you not enter Title or Description – the values will be taken from path properties.

You can manage what information will be in popup and what action by click on marker – it is paths properties. Also path properties – URL Site and Site Name you can use too.

Addition HTML text (as it done for markers) will be displayed in any case (if it is exist)

If your path belongs to group, properties for override placemark icon can be applied.

Lets add start and end placemarks.

Go to Structure details, open Lines tab

Add information for marker 1

Add some text to Addition HTML text field

Do the same for marker 2

If we check map now we can see placemarks (probably without popups), we need add some action.

Go to your path details, and define what content of popup we want, what action by click and etc.

After all out manipulations we have result


Add date of creation

In some cases we need to add date to out popups.

In our data source we have date to show.

Lets do little changes

In Data Source will add createddate, it is column where our date is

In Structure will add our column name to definition

After that we need to enable showing placemarks date of creation in map properties.

Go to your map details, placemarks tab

Last field Show placemark creation set to Date of creation.

It is common way to show this date, not only for this two placemarks.

Check what we get

Date will be displayed only it is defined.

Lets change date format. It can be done by map override.

Go to map overrides and create new one.

Define title, after that we need do settings for placemark, therefore go to Placemark tab

Enter format (it is datetime format for PHP, just search the net for details), save it.

After that go to your map details again, open Advanced settings tab. Scroll down to find Map override field.

Select your map override.

And now we get

Variables

You can pass some parameters to your SQL clause.

Today it is done for used ID, if you want to restrict by user, you can use :userid variable

For example, here SQL text for getting placemarks

SELECT latitude as lat, longitude as lng, createddate, title, description, descriptionhtml, icontype 
FROM demo_zhosmmaps_markers as t 
WHERE t.mapid = 2 
  and t.createdbyuser=:userid

In this case variable will be replaced with current user ID

Conclusion

As you can see you can easy create visualization, easy control behaviour your map objects.

Structure is separated from Data Source for flexible use, you can create one Structure definition and many Data Sources (with different WHERE clause for main SELECT)